php73 的 pcre2 绝对是个大坑

2018-12-07 11:21:59 +08:00
 phpfpm

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

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 只能写成\-

毛估会坑很多人。

1376 次点击
所在节点    问与答
2 条回复
lxk11153
2020-09-22 10:20:44 +08:00
"括号里面的-在 pcre2 只能写成\-" 啥意思?
phpfpm
2020-09-22 19:15:41 +08:00
@lxk11153 [a-z]的-是有意义的
但是结尾的-其实是没有歧义的
只是 pcre2 要求更严格了

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

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

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

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

© 2021 V2EX