V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
phpfpm
V2EX  ›  问与答

php73 的 pcre2 绝对是个大坑

  •  
  •   phpfpm · 2018-12-07 11:21:59 +08:00 · 1376 次点击
    这是一个创建于 2179 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一些写的不规范的正则表达式会挂掉。

    if ( !preg_match( "/^[\w-:]+$/", $tag ) ) {
                $node->_[ HDOM_INFO_TEXT ] = '<' . $tag . $this->copy_until( '<>' );
                if ( $this->char === '<' ) {
                    $this->link_nodes( $node, false );
                    return true;
                } //$this->char === '<'
                if ( $this->char === '>' )
                    $node->_[ HDOM_INFO_TEXT ] .= '>';
                $this->link_nodes( $node, false );
                $this->char = ( ++$this->pos < $this->size ) ? $this->doc[ $this->pos ] : null; // next
                return true;
            }
    

    (见万年没人维护的 SimpleHtmlDom) 中括号里面的-在 pcre2 只能写成\-

    毛估会坑很多人。

    2 条回复    2020-09-22 19:15:41 +08:00
    lxk11153
        1
    lxk11153  
       2020-09-22 10:20:44 +08:00
    "括号里面的-在 pcre2 只能写成\-" 啥意思?
    phpfpm
        2
    phpfpm  
    OP
       2020-09-22 19:15:41 +08:00
    @lxk11153 [a-z]的-是有意义的
    但是结尾的-其实是没有歧义的
    只是 pcre2 要求更严格了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2661 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 05:44 · PVG 13:44 · LAX 21:44 · JFK 00:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.