5

<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);

これで、新しいスタイル タグを次のように HTML に追加できることもわかりました。

$dom->appendChild($ss_elm);
$dom->saveHTML();

ただし、これにより次のシナリオが作成されます。

<html>
<!--Lots of HTML here-->
</html><style type="text/css">css goes here</style>

上記は本質的に無意味です。CSS は解析されず、そこに置かれます。

このソリューションをオンラインで見つけました(明らかに機能しませんでした):

$head = $dom->getElementsByTagName('head');
$head->appendChild($new_elm);
$dom->saveHTML();

助けてくれてありがとう!!

編集:

出来ますか?

4

3 に答える 3

6

getElementsByTagNameノードの配列を返すので、おそらく試してみてください

 $head->[0]->appendChild($new_elm);
于 2012-09-11T22:24:25.623 に答える
5
$head = $dom->getElementsByTagName('head');

DOMNodeList を返します。このような最初の要素を取得する方が良いと思います

 $head = $dom->getElementsByTagName('head')->item(0);

したがって、$head は DOMNode オブジェクトになります。したがって、appendChild メソッドを使用できます。

于 2012-09-11T22:24:25.047 に答える