在提交之前用JS转化一下.转化后再提交:<script language=javascript>
function coder(str)
{
var s = "";
if (str.length == 0) return "";
for (var i=0; i<str.length; i++)
{
switch (str.substr(i,1))
{
case "<" : s += "<"; break;
case ">" : s += ">"; break;
case "&" : s += "&"; break;
case " " : s += " "; break;
case "\"" : s += """; break;
case "\n" : s += "<br>"; break;
default : s += str.substr(i,1); break;
}
}
return s;
}
</script>
function coder(str)
{
var s = "";
if (str.length == 0) return "";
for (var i=0; i<str.length; i++)
{
switch (str.substr(i,1))
{
case "<" : s += "<"; break;
case ">" : s += ">"; break;
case "&" : s += "&"; break;
case " " : s += " "; break;
case "\"" : s += """; break;
case "\n" : s += "<br>"; break;
default : s += str.substr(i,1); break;
}
}
return s;
}
</script>
比如就我们现在这个论坛是怎么处理这个问题的?不过他用的是 asp.多谢楼上的回答,但实际上不好用。我借用了别人的源代码,但还是一知半解:
比如英文的空格,贴上去后都没有了。其它倒还可以。function check_str($txt) {
$count=0;
$arrtemp=$txt;
$len=strlen($txt);
$txt=$txt.' ';
for ( $i=0; $i<$len; $i++) {
if (ord($txt[$i])<128){
$count = $count+1;
}
if ( ord($txt[$i])==10 or ord($txt[$i])==32) {$count=0;}
if ($count>=70) {
for ($j=$i;$j<$len;$j++){
$txt[$j+1]=$arrtemp[$j];
}
$txt[$i]="\n";
$len=$len+1;
$txt[$len]=$arrtemp[$len-1];
$count=0;
$arrtemp=$txt;
}//end if count
}
$txt=trim($txt);
return $txt;
}//end function check_strfunction encode( $txt ) {
$txt=strip_tags($txt);
$txt=htmlspecialchars($txt);
$message=StripSlashes($txt);
return $message;
} //end of function encode
$jt是文章内容
$jt = htmlspecialchars($jt);
$jt = str_replace("\n", "<br>", $jt);
$jt = str_replace(" ", " ", $jt);
$jt = str_replace(" <", "<", $jt);
$jt = str_replace("> ", ">", $jt);