正则表达式为HTML

dan*_*car 8 html php regex

可能重复:
RegEx匹配除XHTML自包含标记之外的开放标记

我有以下字符串:

$str = " 
<li>r</li>  
<li>a</li>  
<li>n</li>  
<li>d</li>  
...
<li>om</li>  
";
Run Code Online (Sandbox Code Playgroud)

如何获取前n个<li>标签的HTML ?

Ex : n = 3 ; result = "<li>r<...>n</li>;
Run Code Online (Sandbox Code Playgroud)

如果可能的话,我想要一个正则表达式.

Byr*_*ock 10

像这样.

$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()
}
Run Code Online (Sandbox Code Playgroud)

哦,是的,学习xpath,它将为你节省很多麻烦.


2nd*_*boy 6

@Byron的解决方案,但使用SimpleXML:

$xml = simplexml_load_string($str);

foreach($xml->xpath("//li[4]") as $node){
  echo $node[0]; // The first element is the text node
}
Run Code Online (Sandbox Code Playgroud)

编辑:我真正喜欢simplexml的另一个原因是对节点内容的简单调试.您可以使用print_r($ xml)使用它的子节点打印对象.