1

如下代码所示,它获取了所有 10 位数字的匹配项,并且效果很好。但是,我只需要使用此标签内的内容过滤匹配项

<tr class="main_row pc">

其他数字在此标签内(pc 更改为 dc)

<tr class="main_row dc">

.

$html= file_get_contents('...');
$matches = array();
preg_match_all('/\d{10}/', $html, $matches);
   foreach ($matches[1] as $match) {
    echo $match.'<br>';
}

如何过滤数字?

更新这是 HTML。我想得到 6914576304 但因为有这个标签<tr class="main_row pc">

<tr class="main_row pc">
    <td class="details">
        <a href="./view/4135660/"><span class="p_t">Fiat Cinquecento </span></a>
        <a class="info" href="./view/4135660/">(Info)</a><br>
        <div class="attribs">16345, <span class="p_l">Blue</span>, Phone 6914576304
        </div>
    </td>
</tr>
4

1 回答 1

0

如何代替/\d{10}/, 做:

/<tr class="main_row pc">\d{10}<\/tr>/

您也可以简化它,但我不知道数字是否在tr两个类的 a 内是否对您很重要。这是一些示例代码及其输出:

<?php

$data = '<tr class="main_row pc">0123456789</tr><tr class="main_row pc">1123456789</tr><tr class="main_row dc">2123456789</tr>';

$matches = array();
preg_match_all('/<tr class="main_row pc">\d{10}<\/tr>/', $data, $matches);
print_r($matches);

?>

输出:

Array
(
    [0] => Array
        (
            [0] => <tr class="main_row pc">0123456789</tr>
            [1] => <tr class="main_row pc">1123456789</tr>
        )
)

前两个匹配,最后一个是不同的类,并被忽略。

于 2013-09-24T13:38:56.000 回答