2011-07-18 23 views
1

我有一个这样的字符串中PHP正则表达式匹配X倍“<li>任何东西在这里</li>”

<li>bla bla bla bla</li> 
<li>hello hello</li> 
<li>the brown fox didnt jump</li> 
. 
. 
. 
<li>aaaaaaarghhhh</li> 

我希望得到一个字符串至极包含(包括在结果字符串里的标签)第X丽的

<li>.....first one....</li> 
<li>.....second one....</li> 
<li>.................</li> 
<li>.....X one....</li> 

这怎么可以用REGEX或别的什么?

我可以删除

</li> 

然后通过

<li> 

爆炸并获得阵列的所述第一X的元素,然后在开始时和在每个元件的端部再次添加Li的标签,但我认为它太脏...

有没有更好的点子?

+1

著名的答案:http://stackoverflow.com/questions/1732348/regex-match-open-tags -except-xhtml-self-contained-tags/1732454#1732454 –

+2

我不要求一个完整的HTML解析器,这是一个没有任何其他HTML标记的字符串,除了

  • 。我想匹配X次一个以
  • 开头并以
  • 结尾的字符串。如果你不喜欢李的替换
  • 与“狗”和
  • 与“猫”。 –

    回答

    4

    看看这个表达式为你的作品(与所需数量李更换2号):

    ((?:<li>.*?<\/li>){2}) 
    
    +3

    稍微修改一下版本,可以使用提供的示例:'/ ^(?:

  • 。*?
  • \ s *){2} /' – Karolis

    +0

    @Karolis谢谢。 –

    2

    如何使用PHP Simple HTML DOM Parser

    你可以从这里下载脚本解析它作为实际的DOM元素:http://sourceforge.net/projects/simplehtmldom/files/

    如果您在加载脚本到您当前的脚本是这样的:

    include_once("simple_html_dom.php"); 
    

    然后就这么简单:

    $html = "<li>bla bla bla bla</li>, etc, etc ......"; 
    
    $list_array = array(); 
    
    foreach($html->find('li') as $element) { 
        $list_array[] = $element->innertext; 
    } 
    
    相关问题