使用preg_match函数,我想从以下html字符串中找到数字30899。
我使用了以下代码行:
preg_match("/<a ?.* onclick=\"cms4i.models.dealersearch.view.navigate\('DETAIL', '(.*)'\);\" class=\"partner_name link\">Zentrum GmbH Standort<\/a>/i", $data, $matches);
它不返回任何匹配的字符串,尽管$ data在这里有30899。
$ data变量如下:
<li class="partner_teaser clearfix">
<div class="partner_gutter">
<a href="#" onclick="cms4i.models.dealersearch.view.navigate('DETAIL', '30899');" class="counter link">01</a>
<i class="icon_car" title="Partner (Verkauf)">Partner (Verkauf)</i>
<i class="icon_spanner" title="Partner (Service)">Partner (Service)</i>
</div>
<div class="partner_summary">
<a href="#" onclick="cms4i.models.dealersearch.view.navigate('DETAIL', '30899');" class="partner_name link">Zentrum GmbH Standort</a>
<div>Franklinstraße 24</div><div>10587 City</div>
<div>5,4 km</div>
<a href="#" onclick="cms4i.models.dealersearch.view.navigate('DETAIL', '30899');" class="link link_a1">Auf Karte anzeigen</a>
</div>
</li>
虽然我之前解决了这类问题,但我找不到如何从这个字符串中找到这些数字的解决方案。我相信专家可以快速找到解决方案。
答案 0 :(得分:2)
正如我所见,您正在搜索navigate
方法中的参数编号。所以,您可以尝试:
preg_match_all('/\.navigate\([a-zA-Z\,\s\']+([0-9]{3,})\'\);" class="partner_name link"\>Zentrum GmbH Standort\<\/a\>/', $html, $matches);
print_r($matches[1]);
输出:
Array
(
[0] => 30899
[1] => 30899
[2] => 30899
)
然后,如果可以有多个唯一编号,则可以排除重复的数字。如果没有,只提取一个数字,而不是全部。
答案 1 :(得分:0)
怎么样?
preg_match('/<a (.*) onclick=/', $data);