php preg_match模式问题,正则表达式模式

时间:2010-04-18 07:06:42

标签: php regex

<tr  id='ieconn3' >
  <td><table width='100%'><tr><td valign='top'><table width='100%'><tr><td>aaaaa
<br>&nbsp;</td></tr><tr><td> 

我希望aaaaa部分到<br></td>。我尝试了很多模式,但没有工作。有什么帮助吗?

2 个答案:

答案 0 :(得分:0)

您不应该尝试使用正则表达式来解析HTML,因为HTML不是常规语言,因此无法使用正则表达式进行描述。改为使用正确的HTML解析器。

如果您使用的是XHTML,则可以使用SimpleXML将其解析为XML并使用SimpleXMLElement::xpath进行查询。对于HTML文档,您可以使用Simple HTML DOM ParserDOMDocument甚至可以同时处理XHTML和HTML。

答案 1 :(得分:0)

正如Gumbo所指出的,如果你坚持使用正则表达式,这只会导致巨大的混乱。但是,如果你确定HTML没有机会,那么这个就可以了:

/<tr><td>(.*)<\/td><\/tr>/

像这样使用:

$string = "<tr  id='ieconn3' >
<td><table width='100%'><tr><td valign='top'><table width='100%'><tr><td>aaaaa<br>&nbsp;</td></tr><tr><td>";

$matches = array();
preg_match("/<tr><td>(.*)<\\/td><\\/tr>/", $string, $matches);

print($matches[1]);