正则表达式的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

下一篇: Regular expression for remove html links