2015-11-02 137 views
0

我想在第二段後插入廣告代碼,但不包括blockquote標記內的段落。使用PHP查找段落標記但不包括blockquote中的那些標記

示例HTML

<section> 
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla convallis odio ac dolor semper porta. Vestibulum dapibus est elit, dictum tristique tellus elementum eget. Pellentesque ligula arcu, aliquet et blandit eget, luctus at neque. Phasellus suscipit nibh neque, gravida vulputate diam congue id.</p> 

<blockquote><p>Suspendisse eleifend nisl vitae odio elementum fermentum. Phasellus elementum commodo tincidunt.</p></blockquote> 

<p>Fusce lobortis magna eu erat mattis aliquet eu non sem. Donec dapibus mattis consequat.</p> 
</section> 

我試圖用DOM來做到這一點,但我從來沒有與DOM工作。我能夠得到所有的段落,但不知道如何檢查段落是否存在於blockquote標籤內。

+0

DOM是正確的方式。你應該學會使用它。查詢所有「p」節點,從該節點獲取xpath,並檢查「blockquote」是否在xpath中。 – Kaii

回答

1

試試這個

$html = '<section><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla convallis odio ac dolor semper porta. Vestibulum dapibus est elit, dictum tristique tellus elementum eget. Pellentesque ligula arcu, aliquet et blandit eget, luctus at neque. Phasellus suscipit nibh neque, gravida vulputate diam congue id.</p> 

<blockquote><p>Suspendisse eleifend nisl vitae odio elementum fermentum. Phasellus elementum commodo tincidunt.</p></blockquote> 
<blockquote><p>Suspendisse eleifend nisl vitae odio elementum fermentum. Phasellus elementum commodo tincidunt.</p></blockquote> 
<blockquote><p>Suspendisse eleifend nisl vitae odio elementum fermentum. Phasellus elementum commodo tincidunt.</p></blockquote> 

<p>Fusce lobortis magna eu erat mattis aliquet eu non sem. Donec dapibus mattis consequat.</p> 
<p>Fusce lobortis magna eu erat mattis aliquet eu non sem. Donec dapibus mattis consequat.</p> 
<p>Fusce lobortis magna eu erat mattis aliquet eu non sem. Donec dapibus mattis consequat.</p> 
</section>'; 
$dom = new DOMDocument(); 
$dom->loadHTML($html); 
$div = $dom->createElement('div','this is newly created div and append after second paragraph'); 
$dom->getElementsByTagName('section')->item(0)->childNodes->item(1)->appendChild($div); 
echo $dom->saveHTML();