哪个大神能帮我看看这段 PHP 正则代码

2017-10-17 20:08:00 +08:00
 lovinlik

第一段代码:

    if(strpos($msglower, '[/url]') !== FALSE) {
        $message = preg_replace("/\[url(=(( https?|ftp|gopher|news|telnet|rtsp|mms|callto|bctp|thunder|qqdl|synacast){1}:\/\/|www\.|mailto:)?([^\r\n\[\"']+?))?\](.+?)\[\/url\]/ies", "parseurl('\\1', '\\5', '\\2')", $message);
    }

第二段代码:

    if($pid && !defined('IN_MOBILE')) {
        $message = preg_replace("/\s?\[postbg\]\s*([^\[\<\r\n;'\"\?\(\)]+?)\s*\[\/postbg\]\s?/ies", "parsepostbg('\\1', '$pid')", $message);
    } else {
        $message = preg_replace("/\s?\[postbg\]\s*([^\[\<\r\n;'\"\?\(\)]+?)\s*\[\/postbg\]\s?/is", "", $message);
    }

我在改一个程序,有一部分内容输出不了,我一行一行的打印调试,在第一段代码前面能正常打印,在后面就打印不出来了,估计问题是这一段代码,我不太懂正则,是他这个表达式有问题吗,还是哪的原因, 希望来个大神帮我看下,其实也可以删掉这段能正常执行下去,但是需要这一段替换

把第一段删掉再往下调试,就是第二段有问题了,但是这一段不重要,有没有都行,但是能改好是最好的了,谢谢大家了

2193 次点击
所在节点    PHP
2 条回复
eoo
2017-10-18 08:54:42 +08:00
PHP 版本是多少?
dlpliu
2017-10-18 19:34:12 +08:00
第二段代码 if 为 true 的正则中使用了 e 修饰符,php7 之后移除了 PCRE 正则的 e 修饰符。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/398433

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX