0

可能重复:
如何使用 PHP 解析和处理 HTML?

我有以下 HTML 输出我想匹配其中的数据,尝试使用 preg_match() 和 preg_match_all() 没有成功。

<td width="130" valign="top">
Jane Doe<br />
            101 Marisa Cir <br />
            Staten Island NY, 10309<br /><br>

我想将“地址数据”匹配为:

Jane Doe, 101 Marisa Cir Staten Island NY, 10309

我用 CURL 获取页面。我尝试过这样的事情但没有成功:

preg_match('~<td width="130" valign="top">(.*?[^<])<br /><br>~i', $str, $showme);
4

2 回答 2

0

[^<]会说匹配任何不是的东西<,所以它不会<br/>在每行的末尾接受两个。如果你只尝试会发生什么:

preg_match('~<td width="130" valign="top">(.+?)<br /><br>~i', $str, $showme);

如果您想在<br/>之后删除这些标签,您可以将它们替换掉。

于 2012-10-15T15:00:38.107 回答
0

您需要有 s 修饰符,如此所述。它使点匹配新行。因为您的文本是多行的,所以您需要 s 修饰符。您可以使用这样的正则表达式:

preg_match_all('~"top">(.*?)<br />(.*?)<br />(.*?)<br /><br>$~s', $text, $matches);

这应该有效。请参阅此处的键盘示例。

于 2012-10-15T15:18:13.723 回答