dp5657087 2016-06-28 04:39
浏览 161

用preg_replace_callback替换preg_replace仍然失败

I'm working on porting SocialEngine to work on PHP7.

On the default install I get the following error:

preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in 
<b>/home/vagrant/code/mysite/project/app/application/libraries/Scaffold/modules/NestedSelectors/NestedSelectors.php</b>
on line <b>300</b>

The code for that error looks like so:

$xml = preg_replace('/([-_A-Za-z*]+)\s*:\s*([^;}{]+)(?:;)/ie', "'<property name=\"'.trim('$1').'\" value=\"'.trim('$2').'\" />
'", $xml);

I replaced it with preg_replace_callback like so:

$xml = preg_replace_callback('/([-_A-Za-z*]+)\s*:\s*([^;}{]+)(?:;)/ie', function($matches) {
    return "'<property name=\"'.trim('$matches[1]').'\" value=\"'.trim('$matches[2]').'\" />
'";
}, $xml);

and now I get this error:

preg_replace_callback(): The /e modifier is no longer supported, use preg_replace_callback instead in 
<b>/home/vagrant/code/mysite/project/app/application/libraries/Scaffold/modules/NestedSelectors/NestedSelectors.php</b> 
on line <b>304</b>

This seems valid to me, what have I done wrong?

  • 写回答

2条回答 默认 最新

  • duanjia3187 2018-01-30 02:43
    关注

    instead of

        $xml = preg_replace_callback('/([-_A-Za-z*]+)\s*:\s*([^;}{]+)(?:;)/ie', function($matches) {
        return "'<property name=\"'.trim('$matches[1]').'\" value=\"'.trim('$matches[2]').'\" />
    '";
    }, $xml);
    

    do

        $xml = preg_replace_callback('/([-_A-Za-z*]+)\s*:\s*([^;}{]+)(?:;)/i', function($matches) {
        return "'<property name=\"'.trim('$matches[1]').'\" value=\"'.trim('$matches[2]').'\" />
    '";
    }, $xml);
    

    What i did was to remove the e in ../ie

    Happy coding...

    评论

报告相同问题?

悬赏问题

  • ¥50 易语言把MYSQL数据库中的数据添加至组合框
  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况