2013-08-23 42 views
0

我把所有元素:simple_html_dom發現只有包含某些文字

<span>something or other</span> 
<b>blarg</b> 
<b>blarg and stuff</b> 
<span>blarg</span> 
<em>wakka wakka</em> 
<em>wakka blarg</em> 
<em>blarg</em> 

,我只是想獲得僅包含「blarg」,並沒有其他的文本元素,所以:

<b>blarg</b> 
<span>blarg</span> 
<em>blarg</em> 

這裏的重要問題是,我試圖檢查頁面中是否存在一個單獨的元素。我有一些運用正則表達式的普遍運氣,但我寧願用simple_html_dom這樣做,這樣我就可以看到孩子和兄弟元素。

有誰知道什麼是simple_html_dom做到這一點最簡單的方法是什麼?

+1

[你試過什麼?](http://mattgemmell.com/2008/12/08/what-have-you-tried/) –

+1

請參閱這個問題已經回答了。希望它會有所幫助。 http://stackoverflow.com/questions/15741644/php-simple-html-dom-parser-finding-specific-text – Tushar

回答

0

做到這一點的一種方式,就是如果它包含「blarg」解析每個標籤和測試...

這裏有一個工作示例:

$text = '<span>something or other</span> 
<b>blarg</b> 
<b>blarg and stuff</b> 
<span>blarg</span> 
<em>wakka wakka</em> 
<em>wakka blarg</em> 
<em>blarg</em>'; 

echo "<div>Original Text: <xmp>$text</xmp></div>"; 

$html = str_get_html($text); 

// Find all elements 
$tags = $html->find('*'); 

foreach ($tags as $key => $tag) { 
    // If text in tag contains 'blarg' 
    if (strcmp(trim($tag->plaintext),'blarg') == 0) { 
     echo "<div> 'blarg' found in \$tags[$key]: <xmp>".$tag->outertext."</xmp></div>"; 
    } 
} 

我不知道你是什麼想要做的,但這可能是一個開始:)

+0

這看起來像我迄今爲止最好的選擇,但我認爲會有更短,更清潔的東西內置到simple_html_dom中。我認爲有一種方法可以單獨使用find()而不必遍歷所有元素? – zoltar

+0

AFAIK,有沒有...我只是發現了大量類似的答案的問題...... http://stackoverflow.com/questions/5465690/php-simple-html-dom-parser-find-string – Enissay

+0

我想你方法,Enissay,但它不會找到'blarg',即使我知道它在那裏(我有HTML被輸出)。任何理由你可以想到這個?我試過大寫,小寫等,以確保仍然沒有找到。 – zoltar