2015-11-02 136 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();