正则表达式的HTML
可能重复:
RegEx匹配除XHTML自包含标签之外的开放标签
我有以下字符串:
$str = "
<li>r</li>
<li>a</li>
<li>n</li>
<li>d</li>
...
<li>om</li>
";
如何获取第一个第n个<li>
标签的HTML?
Ex : n = 3 ; result = "<li>r<...>n</li>;
如果可能,我想要一个正则表达式。
喜欢这个。
$dom = new DOMDocument();
@$dom->loadHTML($str);
$x = new DOMXPath($dom);
// we wan the 4th node.
foreach($x->query("//li[4]") as $node)
{
echo $node->c14n()
}
哦,是的,学习xpath,将会为你节省很多麻烦。
@Byron的解决方案,但使用SimpleXML:
$xml = simplexml_load_string($str);
foreach($xml->xpath("//li[4]") as $node){
echo $node[0]; // The first element is the text node
}
编辑 :我真的喜欢在simplexml的另一个原因是节点内容的简单调试。 您可以使用print_r($ xml)打印具有其子节点的对象。
我相信你知道使用正则表达式来处理HTML不是一个好主意,除非你首先要“整理”它。
PHP中一个非常可行的解决方案是使用Simple XML(http://php.net/manual/en/book.simplexml.php)或作为DOM Document(http://php.net/manual)浏览HTML结构/en/class.domdocument.php)。
链接地址: http://www.djcxy.com/p/76849.html上一篇: Regexp for html