最近在寫bbs中,遇上代碼轉(zhuǎn)換問(wèn)題。尋找了很久,才得到一個(gè)比較完善的解決辦法,可以徹底還原發(fā)文者的原文。
以下貼出,供大家指正。
系統(tǒng):linux+php4+oracle8i
//--標(biāo)題,名字等字段入庫(kù)處理(去首尾空格)
function trans_string_trim($str) {
$str=trim($str);
$str=eregi_replace("'","''",$str);
$str=stripslashes($str);
return $str;
}
//--文章入庫(kù)處理,即textarea字段;
function trans_string($str) {
$str=eregi_replace("'","''",$str);
$str=stripslashes($str);
return $str;
}
//--從庫(kù)中顯示在表單中;在text中以trans轉(zhuǎn)換,在textarea中,無(wú)需轉(zhuǎn)換,直接顯示
//--顯示在WEB頁(yè)面,過(guò)濾HTML代碼;包括鏈接地址
function trans($string) {
$string=htmlspecialchars($string);
$string=ereg_replace(chr(10),"
",$string);
$string=ereg_replace(chr(32)," ",$string);
return $string;
}
//--顯示在WEB頁(yè)面,不過(guò)濾HTML代碼;
function trans_web($string) {
$string=ereg_replace(chr(10),"
",$string);
$string=ereg_replace(chr(32)," ",$string);
return $string;
}
//--顯示在WEB頁(yè)面,過(guò)濾HTML代碼及頭尾空格,主要用于顯示用戶昵稱
function trans_trim($string) {
$string=trim($string);
$string=htmlspecialchars($string);
$string=ereg_replace(chr(10),"
",$string);
$string=ereg_replace(chr(32)," ",$string);
return $string;
}
//--顯示在span中;
function trans_span($string) {
$string=ereg_replace(chr(10),"n",$string);
$string=ereg_replace(chr(32)," ",$string);
$string=ereg_replace('"',""",$string);
return $string;
}
//--在WEB上顯示cookie,過(guò)濾html
function trans_cookie($str) {
$str=trans($str);
$str=stripslashes($str);
$str=eregi_replace("''","'",$str);
return $str;
}
?>
---------------------------
最后,順帶補(bǔ)充一點(diǎn),如果在span中顯示文章中的一段,采用substr取定長(zhǎng)字符串時(shí),記得在span的參數(shù)后面多加一個(gè)空格,否則遇上截到半個(gè)漢字時(shí),會(huì)搞亂html代碼。