0

これは奇妙な問題であり、簡単な解決策は見当たりません。

</head>DOMを使用して、javascript関数内にタグが含まれているドキュメントを解析しようとすると、正しく機能しません。これは</head>、javascript関数の内部を終了</head>タグとして受け取ります。

私はこれと何時間も取り組んできました-何かアイデアはありますか?

<?php
$contents =
<<<EOF
<!DOCTYPE html>
<html><head>
<script>function myFunc() { var myVar = "<head></head>"; } </script>
</head>
<body><p>This is a test</p></body>
</html>
EOF;

//GET CONTENT & LOAD INTO DOM
$doc = new DOMDocument('1.0', 'UTF-8');
$doc->loadHTML($contents);

//STRIP OUT THE JAVASCRIPT
$scripts = $doc->getElementsByTagName('script');
$length = $scripts->length;
for ($i = 0; $i < $length; $i++) {
    $scripts->item(0)->parentNode->removeChild($scripts->item(0));
}

echo htmlentities($doc->saveHTML());
4

2 に答える 2

1

一般的なJavascriptの問題:代わりにこれを使用してください:

var myVar = "<head><\/head>";
于 2012-10-17T16:42:23.217 に答える
0

解釈したくない文字はエスケープできます。例えば:

var myVar = "\x3chead\x3e\x3c/head\x3e";
console.log(myVar);

実際の<>文字なしで「<head></head>」を作成します。

于 2012-10-17T16:45:09.827 に答える