删除标签,但在PHP中的标签之间保持字符串

时间:2012-12-06 06:50:06

标签: php string tags

我有从其他网站获取内容的文件。包括很多:

<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将它们之间的内容保存为“[random] string ...”。

注意: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);

无论如何,谢谢你的帮助

5 个答案:

答案 0 :(得分:5)

<?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

答案 1 :(得分: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>,并且因为使用正则表达式来解决此类问题is a bad idea,那么请尝试使用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

答案 2 :(得分:0)

如果内容属于字符串类型,则可以使用str-replacestr-ireplace

答案 3 :(得分:0)

然后尝试strip_tags函数http://php.net/manual/en/function.strip-tags.php

答案 4 :(得分: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);
 ?>