在Html Dom中添加<script>作为节点值</script>

时间:2013-10-09 01:42:12

标签: php dom domdocument

为什么脚本不能在下面的例子中工作(不工作:即脚本没有在浏览器中激活)

$xpath = new DOMXpath($doc);
$nodes = $xpath->query( "//div[@class = 'ad_stream_hd']");
foreach( $nodes as $node) {
$node->nodeValue = '<script type="text/javascript" src="http://clkrev.com/adServe/banners?tid=SPORTVE158X21&size=158x21" ></script>';
}

2 个答案:

答案 0 :(得分:0)

节点值只是文本,它不像内部HTML,您可以在其中指定带有标记的字符串。使用文档片段,你可以得到一些接近它的东西,但是你设置的是xml而不是html,所以你的html必须是有效的xml。

$xpath = new DOMXpath($doc);
$nodes = $xpath->query( "//div[@class = 'ad_stream_hd']");
if ($nodes->length > 0){
    $node = $nodes->item($nodes->length-1);
    $fragment = $doc->createDocumentFragment();
    $fragment->appendXML('<script type="text/javascript" src="http://clkrev.com/adServe/banners?tid=SPORTVE158X21&amp;size=158x21" ></script>');
    $node->appendChild($fragment);
}

答案 1 :(得分:0)

编辑:迭代DOMNodeList的正确方法:

$nodes_length = $nodes->length;
for ($i=0; $i < $nodes_length; $i++) { 
    $nodes->item($i)->nodeValue = '<script type="text/javascript" src="http://clkrev.com/adServe/banners?tid=SPORTVE158X21&size=158x21" ></script>';
}