对于HHVM,不推荐使用preg_replace()/ e修饰符

时间:2014-04-19 04:33:41

标签: php regex symfony-1.4 hhvm

我在使用Symfony 1.4 Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in /vagrant/lib/util/sfToolkit.class.php on line 365

时遇到错误

有关功能如下:

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_replace_callback将其更改为等效的内容?

1 个答案:

答案 0 :(得分:1)

您可以尝试使用sf 1.5。由L'Express的人员维护的版本:https://github.com/LExpress/symfony1(他们已经解决了问题)

如果他们的更改太多,您可以检查他们如何设法解决'e修饰符'问题并复制他们的解决方案。搜索代码以使用pregtr时,看起来只有三个地方使用了e修饰符(lib/util/sfInflector.class.php中的DoctrineProper中的过滤器表单类{1}}插件)。在这些地方自己修复代码并不困难。