如何仅在存在此 HTML 标记时才进行预匹配


How to preg match only if there is this HTML tag?

如下面的代码所示,它获取所有具有 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>

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

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

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

<?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>
        )
)

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