php preg_match与两个div值之间得到

时间:2016-10-21 14:00:16

标签: php regex preg-match

如何获取此文本的值。 理念: 年份:2012年 KM:69.000 颜色:蓝色 价格:29.9000

preg_match('@</div></td><td
 class=\"searchResultsAttributeValue\">(.*?)<\/td>@si',$string,$val);

 $string = "<div class="classifiedSubtitle">Opel > Astra > 1.4 T Sport</div>
</td>
            <td class="searchResultsAttributeValue">
                    2012</td>
            <td class="searchResultsAttributeValue">
                    69.000</td>
            <td class="searchResultsAttributeValue">
                    Blue</td>
            <td class="searchResultsPriceValue">
                        <div> $ 29.900 </div></td>
                <td class="searchResultsDateValue">
                        <span>21 Nov</span>
                        <br/>
                        <span>2016</span>
                    </td>
                <td class="searchResultsLocationValue">
                        USA<br/>Texas</td>"

1 个答案:

答案 0 :(得分:0)

最好的解决方案不是正则表达式。你应该用Dom来做。

$dom = new DOMDocument();
$dom->loadHTML($string);
$xPath = new DOMXpath($dom);
$tdValue = $xPath->query('//td[@class="searchResultsAttributeValue"]')->get(0)->nodeValue;

这样你就可以得到类searchResultsAttributeValue的td元素。当然你应该验证这个元素是否真的存在,以及其他一些验证,但这就是方法。

希望我能提供帮助。