php7.3正则表达式出了点问题

时间:2019-07-19 11:54:01

标签: php regex simple-html-dom

我将 simple_html_dom.inc.php 用于网址提取器。这些代码正常工作没有问题。但是我从 PHP7.3

收到以下警告
  

警告:preg_match():编译失败:字符范围无效   类别在 1387

中的偏移量4

您可以在此链接中看到错误行: Error Line 1387

if (!preg_match("/^[\w-:]+$/", $tag)) {
    $node->_[HDOM_INFO_TEXT] = '<' . $tag . $this->copy_until('<>');
    if ($this->char==='<') {
        $this->link_nodes($node, false);
        return true;
    }
    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;
}

您有解决此问题的方法吗?预先感谢。

1 个答案:

答案 0 :(得分:2)

PHP 7.3从PCRE升级到PCRE2。在正则表达式上要严格得多。例如,您需要在方括号之间转义 public class baseContainer { public basePropType prop {get; set;} } public class childContainer1 : baseContainer { public childProp1 prop {get; set;} } public class childContainer2 : baseContainer { public childProp2 prop {get; set;} } public class basePropType { } public class childProp1 : basePropType { } public class childProp2 : basePropType { } // elsewhere in another class baseContainer container = GetContainer(); // Don't know which child class this object actually is basePropType propVal = container.prop; 。这就是您的正则表达式中的问题。

将其更改为-应该可以解决您的问题。