Php HHVM不推荐使用preg_replace()/e修饰符

Php HHVM不推荐使用preg_replace()/e修饰符,php,regex,symfony-1.4,hhvm,Php,Regex,Symfony 1.4,Hhvm,Symfony 1.4不推荐使用:preg_replace():不推荐使用/e修饰符,请在第365行的/vagrant/lib/util/sfToolkit.class.php中使用preg_replace_回调 有关职能如下: public static function pregtr($search, $replacePairs) { if(strpos(implode(', ', $replacePairs),'e') > 0) print_r($replac

Symfony 1.4
不推荐使用:preg_replace():不推荐使用/e修饰符,请在第365行的/vagrant/lib/util/sfToolkit.class.php中使用preg_replace_回调

有关职能如下:

public static function pregtr($search, $replacePairs)
  {
    if(strpos(implode(', ', $replacePairs),'e') > 0)
      print_r($replacePairs);

    return preg_replace(array_keys($replacePairs),array_values($replacePairs), $search);
  }
有关数值为:

Array
(
    [#/(.?)#e] => '::'.strtoupper('\1')
    [/(^|_|-)+(.)/e] => strtoupper('\2')
)

如何使用
preg\u replace\u callback
将其更改为等效值?

您可以尝试使用sf 1.5。由L'Express的家伙维护的版本:(他们已经解决了问题)


如果他们的更改太多,您可以检查他们是如何解决“e修饰符”问题的,并复制他们的解决方案。搜索代码以使用
pregtr
看起来只有三个地方使用了
e
修饰符(在
lib/util/sfindlector.class.php
原则中的过滤器形式类和
正确的
插件中)。在这些地方自己修复代码并不难。

您应该将symfony升级到不使用此代码的版本/这非常危险。Eval是邪恶的/e和eval是一样的。。。(您确定要这样做吗?评估可能是一个安全问题!)