0

使用 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>

虽然我之前解决了这类问题,但我找不到如何从这个字符串中找到这些数字的解决方案。我相信专家可以很快找到解决方案。

4

2 回答 2

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
)

然后,如果可能有多个唯一数字,则可以排除重复数字。如果不是,则只提取一个数字,而不是全部。

于 2013-05-30T11:18:36.150 回答
0

关于什么?

preg_match('/<a (.*) onclick=/', $data);
于 2013-05-30T11:18:12.597 回答