php 正则表达式 preg_match 带有 html 标签

php regular expression preg_match with html tag

我写了一些简单的代码

$test='<span class="h2">AAAA</span> <div>aaaa</div> <p>ccc</p>';
preg_match('<\<(.*)>',$test,$matches);
echo $matches[0]

结果是:

AAAA

aaaa

ccc

我不明白为什么 $matches[0] 会变成那样。

有人可以解释一下吗?

谢谢。

这就是您在浏览器中看到的输出。从命令行检查 HTML 源或 运行。你真正得到的是:

<span class="h2">AAAA</span> <div>aaaa</div> <p>ccc</p>

为什么?因为 <> 是你怀孕的 delimiter!所以实际的正则表达式只是 \<(.*),说 "give me a less than sign and then any number of anything." preg 是贪婪的,所以它会尽可能多地消耗,这就是为什么。