正则表达式返回两个结果

时间:2015-04-27 16:19:47

标签: php regex html-parsing preg-match-all

我尝试从网站检索结果,但我写的正则表达式不希望返回所有结果我有结果1,3,5 ......但从不2,4,6 ......

这是一个文本示例:

<tr>
<td style="background-color:white">Inter en attente de cloture : </td>
<td style="background-color:red">depuis +2H</td>
<td style="background-color:#FF7F00">depuis -2H</td>
</tr>
</table>
<table class="tab_script">
<tr>
<td>N° commande</td>
<td>Nom</td>
<td>Prenom</td>
<td>N° Mobile</td>
<td>N° Fixe</td>
<td>Ville</td>
<td>Code Postal</td>
<td>Num. Intervention</td>
<td>date rdv</td>
</tr>

<tr bgcolor="#E5E5E5">
<form method="POST">
<td></td>
<td>NOM 1</td>
<td></td>
<td>0600000000</td>
<td>0400000000</td>
<td>VILLE</td>
<td>12345</td>
<td><a  href="index.php?id=13&statut=2&id_inter=123271915">123271915</a></td>
<td style="background-color:red">23/11/2012 08:30</td>
</tr>
</form>

<tr bgcolor="#FFFFFF">
<form method="POST">
<td></td>
<td>NOM 2</td>
<td></td>
<td>0600000000</td>
<td>0400000000</td>
<td>VILLE</td>
<td>54321</td>
<td><a  href="index.php?id=13&statut=2&id_inter=130680172">130680172</a></td>
<td style="background-color:red">09/03/2013 18:30</td>
</tr>
</form>

<tr bgcolor="#E5E5E5">
<form method="POST">
<td></td>
<td>NOM 3</td>
<td></td>
<td>0600000000</td>
<td>0400000000</td>
<td>VILLE</td>
<td>12345</td>
<td><a  href="index.php?id=13&statut=2&id_inter=123271915">123271915</a></td>
<td style="background-color:red">23/11/2012 08:30</td>
</tr>
</form>

<tr bgcolor="#FFFFFF">
<form method="POST">
<td></td>
<td>NOM 4</td>
<td></td>
<td>0600000000</td>
<td>0400000000</td>
<td>VILLE</td>
<td>54321</td>
<td><a  href="index.php?id=13&statut=2&id_inter=130680172">130680172</a></td>
<td style="background-color:red">09/03/2013 18:30</td>
</tr>
</form>

我的正则表达式:

$preg='#<tr.*?>.*?';
$preg.='<form.*?>.*?';
$preg.='<td>(.*?)</td>.*?';
$preg.='<td>(.*?)</td>.*?';
$preg.='<td>(.*?)</td>.*?';
$preg.='<td>(.*?)</td>.*?';
$preg.='<td>(.*?)</td>.*?';
$preg.='<td>(.*?)</td>.*?';
$preg.='<td>(.*?)</td>.*?';
$preg.='<td>(.*?)</td>.*?';
$preg.='<td>(.*?)</td>.*?';
$preg.='#ism';
preg_match_all($preg,$response,$match);

结果:

1 个答案:

答案 0 :(得分:0)

您似乎知道所有文件的格式都是一致的。

我建议你逐行搜索并存储你需要的数据。

一个更好的解决方案是使用PHP SAX,它完全可以用于XML:

每次找到开始标记时,链接代码都会调用startElement,每个结束标记都会调用endElement。如您所知,您可以轻松找到所需的数据