0

getElementsByTagNameを使用してHTML内のすべてのスクリプトタグを検索し、src属性を操作したいと思います。

これは次のコードで正常に機能していますが、条件付きコメント内のタグは無視されます。

foreach ($dom->getElementsByTagName('script') as $node) 
{
    if ($node->hasAttribute('src'))
    {
        echo $node->getAttribute('src');
    } 
}

条件付きコメントタグが無視される例:

<!--[if lt IE 9]>
<script src="js/html5shiv.js"></script>
<![endif]-->

これを検索に含める方法はありますか?以下のスレッドを見つけましたが、すべての子要素をループするという提案は必ずしも理想的ではありません。それらは他の解決策ですか?

PHPDomDocumentは条件付きコメントを変更します

ありがとうeverso!

4

1 に答える 1

0

コメントはコメントであるため、そこにあるものは DOM に要素を生成しません。script要素なし == 選択するものがありません。

他のスレッドの解決策が気に入らない場合は、DOM オブジェクトを作成する前に、正規表現でコメントを切り取ってみてください。しかし、それがより信頼できるものであるかどうかは疑問です... わずかに不正な形式の HTML に遭遇すると、予想よりも多く (または少なく) カットされる可能性があります。

于 2013-03-22T16:00:18.010 に答える