2

他のサイトからコンテンツを取得するファイルがあります。それはたくさんのクルードです:

<script>
[random] string 1
</script>

<script>
[random] string 2
</script>
....
<script>
[random] string n
</script>

<script type="text/javascript">
must keeping script
</script>

<script type=text/javascript'>
must keeping script
</script>

<script>削除したいのです</script>が、PHPを使用してそれらの間に「[ランダム]文字列...」のコンテンツを保持します。

注:str_replaceはそれらを削除できますが、他のスクリプト<script type="text/javascript">must keeping</script>やを傷つける可能性があり<script type='text/javascript'>must keeping</script>ます。</script>スクリプトを保持する必要のあるクローズタグが失われます

助けてくれてありがとう

//解決済み:

$content = preg_replace('/(<script>)(.*?)(<\/script>)/s', '$2', $content);

とにかく、助けてくれてありがとう

4

5 に答える 5

6
<?php
 $text = '<p>Test paragraph.</p><!-- Comment --> <a href="#fragment">Other text</a>';
 echo strip_tags($text);

 ?>

ストリップタグの詳細については、http://php.net/manual/en/function.strip-tags.phpを参照してください。

于 2012-12-06T07:07:27.580 に答える
3

これを試して

$content = "
    <script>
    [random] string 1
    </script>

    <script>
    [random] string 2
    </script>
    ....
    <script>
    [random] string n
    </script>    
";

$content = str_replace(array("<script>", "</script>"), "", $content);

編集:あなたは取り除きたい<script></script>と同時に維持したいので、<script type="text/javascript"></script>そしてこの種の問題を解決するために正規表現を使用することは悪い考えなので、次のように使用してみてくださいDOMDocument

$dom = new DOMDocument();

$content = "
    <script>
    [random] string 1
    </script>

    <script>
    [random] string 2
    </script>
    ....
    <script>
    [random] string n
    </script>

    <script type='text/javascript'>
    must keeping script
    </script>

    <script type='text/javascript'>
    must keeping script
    </script>    
";

$dom->loadHTML($content);
$scripts = $dom->getElementsByTagName('script');

foreach ($scripts as $script) {
    if (!$script->hasAttributes()) {
        echo $script->nodeValue . "<br>";
    }
}

これは出力します:

[ランダム]文字列1
[ランダム]文字列2
[ランダム]文字列n

于 2012-12-06T07:10:39.823 に答える
0

コンテンツが文字列型の場合は、str-replaceまたはstr-ireplaceを使用できます

于 2012-12-06T06:55:48.113 に答える
0

次に、strip_tags関数http://php.net/manual/en/function.strip-tags.phpを試してください。

于 2012-12-06T07:01:05.337 に答える
0

ファイルがtest.txtの場合は、このコードを使用します

<?php
$myFile = "test.txt";
$fh = fopen($myFile, 'r');
$theData = fread($fh, 5000);
echo str_replace("</script>","",str_replace("<script>","",$theData));
fclose($fh);
 ?>
于 2012-12-06T07:13:01.137 に答える