最近在寫bbs中,遇上代碼轉換問題。尋找了很久,才得到一個比較完善的解決辦法,可以徹底還原發文者的原文。
以下貼出,供大家指正。
系統:linux php4 oracle8i
以下為引用的內容:
<?
//--標題,名字等字段入庫處理(去首尾空格)
function trans_string_trim($str) {
$str=trim($str);
$str=eregi_replace("'","''",$str);
$str=stripslashes($str);
return $str;
}
//--文章入庫處理,即textarea字段;
function trans_string($str) {
$str=eregi_replace("'","''",$str);
$str=stripslashes($str);
return $str;
}
//--從庫中顯示在表單中;在text中以trans轉換,在textarea中,無需轉換,直接顯示
//--顯示在WEB頁面,過濾HTML代碼;包括鏈接地址
function trans($string) {
$string=htmlspecialchars($string);
$string=ereg_replace(chr(10),"<br>",$string);
$string=ereg_replace(chr(32)," ",$string);
return $string;
}
//--顯示在WEB頁面,不過濾HTML代碼;
function trans_web($string) {
$string=ereg_replace(chr(10),"<br>",$string);
$string=ereg_replace(chr(32)," ",$string);
return $string;
}
//--顯示在WEB頁面,過濾HTML代碼及頭尾空格,主要用於顯示用戶昵稱
function trans_trim($string) {
$string=trim($string);
$string=htmlspecialchars($string);
$string=ereg_replace(chr(10),"<br>",$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,過濾html
function trans_cookie($str) {
$str=trans($str);
$str=stripslashes($str);
$str=eregi_replace("''","'",$str);
return $str;
}
?>
最後,順帶補充一點,假如在span中顯示文章中的一段,采用substr取定長字符串時,記得在span的參數後面多加一個空格,否則遇上截到半個漢字時,會搞亂html代碼。