我是RegEx的新手。我正在解析一个HTML页面,因为它有很多错误,所以我不能使用XML或HTML解析器。所以我使用了正则表达式。我的代码如下所示:
$html = '<html><div data-id="ABC012" data-index="123" ...';
preg_match_all('/<div data-id="[A-Z\\d]+" data-index="\\d+"/', $html, $result);
var_dump($result);
输出看起来很好,所以代码可以正常工作。现在我想提取匹配的值。我完全按照this答案中的描述进行了提取,现在代码如下所示:
$html = '<html><div data-id="ABC012" data-index="123" ...';
preg_match_all('/<div data-id="#([A-Z\\d]+)" data-index="#(\\d+)"/', $html, $result);
var_dump($result);
但是它输出了一个空数组。出了什么问题?请不要通过添加结束符“〉”或者使它对白色更健壮来改进模式。我只需要让代码运行起来。
1条答案
按热度按时间fcg9iug31#
可以这样编写代码和模式,使用一个反斜杠匹配数字
\d
,并在模式中省略#
,因为示例数据中没有#
:产出