我想使用 php 解析一个 html 字符串(简单数字匹配)。
<i>1002</i><i>999</i><i>344</i><i>663</i>
我想要结果作为一个数组。例如:[1002,999,344,633,...]
我试过这样:
<?php
$html="<i>1002</i><i>999</i><i>344</i><i>663</i>";
if(preg_match_all("/<i>[0-9]*<\/i>/",$html, $matches,PREG_SET_ORDER))
foreach($matches as $match) {
echo strip_tags($match[0])."<br/>";
}
?>
我得到了我想要的确切输出。
1002
999
344
663
但是,当我通过对正则表达式进行小的更改来尝试相同的代码时,我得到了不同的答案。
像这样:
<?php
$html="<i>1002</i><i>999</i><i>344</i><i>663</i>";
if(preg_match_all("/<i>.*<\/i>/",$html, $matches,PREG_SET_ORDER))
foreach($matches as $match) {
echo strip_tags($match[0])."<br/>";
}
?>
输出 :
1002999344663
(正则表达式匹配整个字符串。)
现在我想知道为什么我会变成这样?.*
如果使用(零个或多个)而不是 有什么区别[0-9]*
?