V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lovinlik
V2EX  ›  PHP

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

  •  
  •   lovinlik · 2017-10-17 20:08:00 +08:00 · 2025 次点击
    这是一个创建于 2375 天前的主题,其中的信息可能已经有所发展或是发生改变。

    第一段代码:

        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);
        }
    

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

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

    2 条回复    2017-10-18 19:34:12 +08:00
    eoo
        1
    eoo  
       2017-10-18 08:54:42 +08:00 via Android
    PHP 版本是多少?
    dlpliu
        2
    dlpliu  
       2017-10-18 19:34:12 +08:00
    第二段代码 if 为 true 的正则中使用了 e 修饰符,php7 之后移除了 PCRE 正则的 e 修饰符。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5012 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 09:38 · PVG 17:38 · LAX 02:38 · JFK 05:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.