我将 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;
}
您有解决此问题的方法吗?预先感谢。
答案 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;
。这就是您的正则表达式中的问题。
将其更改为-
应该可以解决您的问题。