使用PHP DOMDocument添加样式标记

app*_*tix 4 css php appendchild domdocument createelement

我想创建一组<style>标签并将其添加到HTML文档的head标签中.

我知道我可以这样开头:

$url_contents = file_get_contents('http://example.com');
$dom = new DOMDocument;
$dom->loadHTML($url_contents);

$new_elm = $dom->createElement('style', 'css goes here');
$elm_type_attr = $dom->createAttribute('type');
$elm_type_attr->value = 'text/css';
$new_elm->appendChild($elm_type_attr);
Run Code Online (Sandbox Code Playgroud)

现在,我也知道我可以像这样在HTML中添加新的样式标记:

$dom->appendChild($ss_elm);
$dom->saveHTML();
Run Code Online (Sandbox Code Playgroud)

但是,这将创建以下方案:

<html>
<!--Lots of HTML here-->
</html><style type="text/css">css goes here</style>
Run Code Online (Sandbox Code Playgroud)

以上基本上没有意义; CSS没有解析,只是坐在那里.

我在网上找到了这个解决方案(显然没有用):

$head = $dom->getElementsByTagName('head');
$head->appendChild($new_elm);
$dom->saveHTML();
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助!!

编辑:

可能吗?

小智 5

$head = $dom->getElementsByTagName('head');
Run Code Online (Sandbox Code Playgroud)

返回DOMNodeList.我认为得到像这样的第一个元素会更好

 $head = $dom->getElementsByTagName('head')->item(0);
Run Code Online (Sandbox Code Playgroud)

所以$ head将是一个DOMNode对象.所以你可以使用appendChild方法.


anj*_*lis 5

getElementsByTagName 返回一个节点数组,所以可能会尝试

 $head->[0]->appendChild($new_elm);
Run Code Online (Sandbox Code Playgroud)