检查字符串是否包含 PHP 中的 JS
Check if string contains JS in PHP
我正在尝试创建一个函数来删除任何潜在的脚本标签,但不会删除其他标签,如 p、li、ol、span、h1、...
这就是我目前所拥有的。我还将 < 和 > 写为编码字符“%3C”和“%3E”以及 HTML 名称和数字。尝试为第一个执行正则表达式,如您所见“^<(/)?script>$”。但它不起作用 :D
function smartFilter($string) {
$string = strtolower($string);
if (strpos($string, "<script>") !== FALSE || strpos($string, "<script>") !== FALSE || strpos($string, "<script>") !== FALSE || strpos($string, "%3Cscript%3E") !== FALSE) {
$unallowed = array("^<(\/)?script>$", "<script>", "</script>", "%3Cscript%3E", "%3C/script%3E", "<script>", "<script>");
return preg_replace($unallowed, "", $string);
} else {
return $string;
}
}
为什么不使用 php 中的 strip_tags
? Link here.
这完成了我要求的所有工作:D
function smartFilter($string) {
return strip_tags($string, "<p><li><ol><ul><h1><h2><h3><h4><h5><span><b><u><i>");
}
我正在尝试创建一个函数来删除任何潜在的脚本标签,但不会删除其他标签,如 p、li、ol、span、h1、...
这就是我目前所拥有的。我还将 < 和 > 写为编码字符“%3C”和“%3E”以及 HTML 名称和数字。尝试为第一个执行正则表达式,如您所见“^<(/)?script>$”。但它不起作用 :D
function smartFilter($string) {
$string = strtolower($string);
if (strpos($string, "<script>") !== FALSE || strpos($string, "<script>") !== FALSE || strpos($string, "<script>") !== FALSE || strpos($string, "%3Cscript%3E") !== FALSE) {
$unallowed = array("^<(\/)?script>$", "<script>", "</script>", "%3Cscript%3E", "%3C/script%3E", "<script>", "<script>");
return preg_replace($unallowed, "", $string);
} else {
return $string;
}
}
为什么不使用 php 中的 strip_tags
? Link here.
这完成了我要求的所有工作:D
function smartFilter($string) {
return strip_tags($string, "<p><li><ol><ul><h1><h2><h3><h4><h5><span><b><u><i>");
}