如何使用Regex和Php获取元素之间的数据

时间:2012-06-19 21:22:51

标签: php html regex

如何使用PHP + Regex从这个html代码中获取“85 mph”? 我无法想出正确的正则表达式 这是代码 http://pastebin.com/ffRH9K9Q

    <td align="left">Los Angeles</td>
</tr>
<tr>
    <td align="left">Wind Speed:</td>
    <td align="left">85 mph</td>
</tr>
<tr>
    <td align="left">Snow Load:</td>
    <td align="left">0 psf</td>

(简化示例)

3 个答案:

答案 0 :(得分:2)

你已经听说过没有使用正则表达式,所以我不会谈论这个。 我们来试试吧。也许不是理想的解决方案,但可能适合你。

    <?php
       $data = 'your table';
       preg_match ('|<td align="left">(.*)mph</td>|Usi', $data, $result);
       print_r($result);  // Your result shoud be in here

你可能需要在正则表达式中考虑一些修剪或占用空格。

答案 1 :(得分:0)

链接到关于NOT PARSING HTML WITH REGEX的帖子的第一条评论很重要。也就是说,尝试类似DOMDocument::loadHTML之类的东西。这应该让你开始用PHP遍历DOM。

答案 2 :(得分:0)

为了扩展DorkRawk的建议(希望提供一个相对简洁的答案,对于初学者来说不是一件容易的事),试试这个:

<?php

$yourhtml = '<td align="left">Los Angeles</td>
</tr>
<tr>
    <td align="left">Wind Speed:</td>
    <td align="left">85 mph</td>
</tr>
<tr>
    <td align="left">Snow Load:</td>
    <td align="left">0 psf</td>';

$dom = new DOMDocument();
$dom->loadHTML($yourhtml);

$xpath = new DOMXPath($dom);
$matches = $xpath->query('//td[.="Wind Speed:"]/following-sibling::td');

foreach($matches as $match) {
    echo $match->nodeValue."\n\n";
}