使用preg_match提取文本

时间:2014-08-04 14:31:53

标签: php html preg-match

我正在尝试使用PHP命令preg_match从HTML中提取一段文本。 我已成功将HTML解析为变量,但现在我不得不提取正确的信息 - 可能是因为我对preg_match的语法有点困惑。

基本上,这是我感兴趣的HTML片段:

...<tr >
<td >Metuje</td>
<td ><a href="./detail_stanice/307158.html" >Maršov nad Metují</a></td>
<td >A</td>
<td >90</td>
<td >120</td>
<td >150</td>
<td >cm</td>
<td >04.08. 14:20</td>
<td >31</td>
<td >0.53</td>
<td ><img src="./img/ldown.png" width="15" /></td>
</tr>...

我需要的是在表格中找到这个特定的行(其中包含几行),所以基本上我需要在第二个单元格中搜索名称“MaršovnadMetují”,然后提取值将该行上的后续单元格转换为字符串,换句话说,在这种特殊情况下,我希望有一个字符串,其值为A,90,120等,直到该行的结尾。

在网站上有其他行具有完全相同的格式,只是具有不同的值,因此我将使用相同的语法为第二个单元格中具有不同名称的行提取值。

我自己尝试过,但我无法获得正确的输出。 我尝试过类似的东西,但是这并没有解决问题,我知道我必须以某种方式实现单元格TD命令,但不幸的是我在这种特殊情况下无法正确使用它。:

preg_match("/Maršov nad Metují(.*?)\<\/tr/", $html, $results);

非常感谢任何帮助。 感谢

2 个答案:

答案 0 :(得分:0)

试试这个:

<?php
$info = '<tr ><td >Metuje</td><td ><a href="./detail_stanice/307158.html" >Maršov nad Metují</a></td><td >A</td><td >90</td><td >120</td><td >150</td><td >cm</td><td >04.08. 14:20</td><td >31</td><td >0.53</td><td ><img src="./img/ldown.png" width="15" /></td></tr>';


preg_match('/<a href="(.*)" >(.*)</Ui',$info,$result);
print_r($result[2]);// Maršov nad Metují

答案 1 :(得分:0)

preg_match_all("/<td.*?>(.+?)<\/td>/is", $html, $matches);
$result = $matches[1];
array_shift($result);
array_shift($result);
print implode(', ', $result);