公用函數庫common.func.php中函數HtmlReplace($str,$rptype=0)具有替換HTML標記的作用,但是
$str = '<p>我是合肥裝飾網工程師</p>';
$str = HtmlReplace($str,0);
echo $str;
輸出結果:
<p>我是合肥裝飾網工程師</p>
可以看出<p>仍然存在
讀一下HtmlReplace($str,$rptype=0)函數:
// $rptype = 0 表示僅替換 html標記
// $rptype = 1 表示替換 html標記同時去除連續空白字符
// $rptype = 2 表示嚴格替換 html標記同時去除所有空白字符
// $rptype = -1 表示僅替換 html危險的標記
function HtmlReplace($str,$rptype=0)
{
$str = stripslashes($str);
if($rptype==0)
{
$str = htmlspecialchars($str);
}
else if($rptype==1)
{
$str = htmlspecialchars($str);
$str = str_replace(" ",' ',$str);
$str = ereg_replace("[ ]{1,}",' ',$str);
}
else if($rptype==2)
{
$str = htmlspecialchars($str);
$str = str_replace(" ",'',$str);
$str = ereg_replace("[ ]",'',$str);
}
else
{
$str = ereg_replace("[ ]{1,}",' ',$str);
$str = eregi_replace('script','script',$str);
$str = eregi_replace("<[/]{0,1}(link|meta|ifr|fra)[^>]*>",'',$str);
}
return addslashes($str);
}
查看資料發現htmlspecialchars的作用:
htmlspecialchars() 函數把一些預定義的字符轉換為 HTML 實體。
預定義的字符是:
& (和號) 成為 &
" (雙引號) 成為 "
' (單引號) 成為 '
< (小于) 成為 <
> (大于) 成為 >
因此,我在這里將HtmlReplace($str,$rptype=0)改裝為:
function HtmlReplace($str,$rptype=0)
{
$str = stripslashes($str);
if($rptype==0)
{
$str = htmlspecialchars($str);
}
else if($rptype==1)
{
$str = htmlspecialchars($str);
$str = str_replace(" ",' ',$str);
$str = ereg_replace("[ ]{1,}",' ',$str);
}
else if($rptype==2)
{
$str = strip_tags($str);
$str = str_replace(" ",'',$str);
$str = ereg_replace("[ ]",'',$str);
$str = eregi_replace("<[/]{0,1}(link|meta|ifr|fra|title|p|body|html|iframe|script)[^>]*>",'',$str);
}
else
{
$str = ereg_replace("[ ]{1,}",' ',$str);
$str = eregi_replace('script','script',$str);
$str = eregi_replace("<[/]{0,1}(link|meta|ifr|fra)[^>]*>",'',$str);
}
return addslashes($str);
}