试图找到所有HTML <表>行与该运营商在PHP所有的HTML表行,但没有:查找与正则表达式
preg_match_all("#<tr[^>]*>.*</tr>#", $content, $matches);
有什么不对?
试图找到所有HTML <表>行与该运营商在PHP所有的HTML表行,但没有:查找与正则表达式
preg_match_all("#<tr[^>]*>.*</tr>#", $content, $matches);
有什么不对?
除非进入复杂的递归表达式,否则任何正则表达式都会遇到嵌套表的问题。
试试这个:
$dom = new DOMDocument();
$dom->loadHTML($content);
$matches = $dom->getElementsByTagName("tr");
$count = $matches->length;
如果我想在之后查看
由于'$ matches'是一个DOMNodeList,每个节点都有一个属性'childNodes',它是子节点的另一个DOMNodeList。 – DavidS 2012-08-08 06:10:11
@Kolink嗯,我可能会遇到当我必须解析无效的HTML DOMDocument解析失败。 – ravisoni 2013-08-30 07:03:49
我想你会在PHP HTML parser上获得更多的成功。
使用https://code.google.com/p/ganon/(Ganon)糊状物更快,更好。 – ravisoni 2013-08-30 07:04:49
preg_match_all ('#<tr[^>]*>(.*?)</tr>#s')
增加的“S”标志,这样它也匹配换行符,问号匹配(懒惰),并且还添加了括号(捕捉组)。
[小马他来...](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454) – 2012-08-07 13:50:26
[The小马他来...](http://stackoverflow.com/a/1732454/1338999)不要使用正则表达式来描述HTML! – Matt 2012-08-07 13:50:47
我真的不知道我们是否应该能够用罐装'HTML/Regexp'原因来解决问题 – 2012-08-07 13:51:19