2015-04-02 38 views
1

我有HTML結構這樣解析HTML PHP和獲取值使用週期

<div class = article-comments> 
    <div class="article-comment"> 
    <div class="article-comment-header">...</div> 
    <div class="article-comment-content">...</div> 
    </div> 
    <div class="article-comment"> 
    <div class="article-comment-header">...</div> 
    <div class="article-comment-content">...</div> 
    </div> 
</div> 
. 
. 
. 
</div> 

我有一個div元素 - 評論其中包含許多其他分區元素 - 評論。我需要獲取標題其中包含註釋創建者名稱和* content,其中包含註釋。我有這樣的PHP代碼:

foreach($bot->parseBetweenRegexArray($data, '<div.*class="article-comment-content">', '<\/div>') as $commentary){ 

    printf("comment: %s",$commentary); 

foreach($bot->parseBetweenRegexArray($data, '<div.*class="article-comment-header">', '<\/div>') as $name) { 

    printf("name: %s",$name); '<br />'; 
          } 
} 

但與此代碼我無法得到正確的順序,如評論作者名稱和相應的評論等。 如何做到這一點?

謝謝!

+0

你不能用正則表達式解析HTML:http://stackoverflow.com/a/1732454/140925 – ytg 2015-04-02 06:35:11

+0

如果是這樣,比如,我怎麼才能正確使用循環獲得它的HTML div屬性的值? – dreamPr 2015-04-02 06:37:56

+0

我不知道週期,但我會尋找一個DOM或SAX解析器。 – ytg 2015-04-02 06:43:01

回答

0

如果您不喜歡使用DOM(並且不想使用帶HTML的正則表達式),您可以嘗試使用<div class="article-comment-header">字符串的explodeHTML文本。

非常第一元件的結果陣列的(索引0)將是無用的(它是第一個<div>之前所有,所以開始從第二(索引1)。

然後用</div>爆炸的第二元件循環。第二個數組的第一個元素是標題

然後做類似的東西讓筆者

提示:。PHP explode()功能提供了額外的參數$limit讓您的文字分開,只有兩件

我同意這不是最好的解決方案,但我覺得很簡單。我寧願使用一些XML類來找到它。