2011-07-18 25 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; 
    } 
    
    相關問題