【发布时间】:2017-05-29 22:23:28
【问题描述】:
在下面的示例字符串中,我有 5 次 #A# 和 11 次 #B# 但 preg_match_all 只返回一个匹配 #A# 和#B# 有 0 个匹配项。知道如何解决这个问题吗?
$string = '<div>#Α#</div><div i="">#Α#</div><div i=""><a href="#Β#" class="" s="" p="65" t="4"></a><a href="#Β#" class="" s="" p="65" t="4"></a><a href="#Β#" class="" s="" p="68" t="4"></a><a href="#Β#" class="" s=""></a><a href="#Β#" class="" s="" p="75" t="2"></a><a href="#Β#" class="" s=""></a><a href="#Β#" class="" s="" p="65" t="3"></a><a href="#Β#" class="" s="" p="60" t="4"></a><a href="#Β#" class="" s=""></a><a href="#Β#" class="" s="" p="60" t="4"></a><a href="#Β#" class="" s="sv_plus" p="75" t="3"></a><noscript><center><h1 style="color:red;font-size:50px">#A#</h1></center><div>#Α#</div></noscript><div>#Α#</div>';
preg_match_all("/\#A\#/",$string,$matches);
print_r($matches); //return only one match instead 5
preg_match_all("/\#B\#/",$string,$matches);
print_r($matches); //return zero matches instead 11
【问题讨论】:
-
难以置信,我不知道为什么!!!
-
还不确定问题,但您可以使用这个有用的测试器来玩它:phpliveregex.com/p/kfs
-
谁是拒绝这个问题的愚蠢人?我真的找不到任何理由。
-
@CasimiretHippolyte:可能有人(正确地)认为用正则表达式解析 HTML 是一个糟糕的主意。不过,这不是对问题投反对票的好理由,尤其是因为这个特定问题甚至与这里有 HTML 的事实无关。
-
@ThiefMaster:你可能是对的。