2011-11-03 260 views
0

我無法弄清楚如何只獲取那些不包含其他div的「div」(含內容)。preg_match:獲取不包含div的div -s

例如:

<div id='first'> 
    ... 
    <div id='second'> 
     ... 
    </div> 
</div> 
<div id='third'> 
    ... 
</div> 

而我只需要「第二」和「第三」的div內容,打開和關閉標籤,因爲它們不包括其他的div。

我試過這種模式:~(<div id='[a-z].+')(.*?)(</div>)~s 但它不好。

我希望我清楚......先謝謝你了!

+0

另一個解析HTML與正則表達式 – k102

+0

不可能。抱歉。 – FailedDev

回答

1

雖然我不是一個關於使用rexex來提取HTML的納粹,但這個問題通過xpath和DOM來簡單得多。

$dom = new DomDocument(); 
$dom->loadHTML($html); 

$xpath = new DOMXPath($dom); 
$divs = $xpath->query("//div[not(div)]"); 

我沒有測試該代碼。但關鍵部分是找不到div div的所有div的非運算符。

+0

謝謝你的回答!是的,它使用xpath必須更容易,但是我真的很想知道如何處理正則表達式,如果可能的話。 – user527584

+0

我不確定是否有可能。也許,但它會非常複雜。 xpath有什麼問題,他們在PHP中使用起來非常簡單,只需搜索所有您需要的信息即可。 – georgiecasey

+0

沒有錯,我只是有興趣,如果可以用正則表達式來做。所以再次感謝你。我正在使用xpath! – user527584