使用PHP?</script>去除<script>标签及其间的所有内容

时间:2010-04-23 11:21:54

标签: php

如何使用PHP删除脚本标记及其中的所有内容?

4 个答案:

答案 0 :(得分:11)

正如David所说,如果您希望清理传入的数据,仅过滤脚本标记是不够的。 HTML Purifier承诺做全套服务:

  

HTML Purifier符合标准     编写的HTML过滤器库     PHP。 HTML Purifier不仅会删除所有恶意内容     代码(更好地称为XSS)经过全面审核,     安全而宽松的白名单,     它还将确保您的文件     符合标准,只有通过a才能实现     全面了解W3C的规范。

答案 1 :(得分:8)

按照Pekka建议的那样去HTML Purifier

永远不要使用正则表达式

以下是一个示例,正则表达式过滤器已损坏,适用于浏览器(在Firefox上测试)

<script script=">>><script></script><script>//"  >
/**/
alert(1);
</script
>

答案 2 :(得分:1)

我用这个:

$tag_para_remover_codigo_fonte_url_dentro_buscador = array("head","script","style","object","embed","applet","noscript","noframes","noembed");

for ($i=0;$i<count($tag_para_remover_codigo_fonte_url_dentro_buscador);$i++) {

    $codigo_fonte_url_dentro_buscador = preg_replace("/< *" . $tag_para_remover_codigo_fonte_url_dentro_buscador[$i] . "[^>]*>(.*?)<\/" . $tag_para_remover_codigo_fonte_url_dentro_buscador[$i] . " *>/i"," ",$codigo_fonte_url_dentro_buscador);

}

$codigo_fonte_url_dentro_buscador = html_entity_decode(strip_tags($codigo_fonte_url_dentro_buscador));

答案 3 :(得分:-2)

您可以使用功能strip_tags

执行此操作

http://www.php.net/strip_tags

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

// Allow <p> and <a>
echo strip_tags($text, '<p><a>');
?>