最近、bbs を書いているときにコード変換の問題が発生しました。長い間探した結果、投稿者の元のテキストを完全に復元できる比較的完全な解決策をついに見つけました。
修正のために以下に投稿しました。
システム: linux+php4+oracle8i
//--タイトル、名前、その他のフィールドがデータベースに処理されます (先頭と末尾のスペースが削除されます)
function trans_string_trim($str ) {
$str=trim($str);
$str=eregi_replace("'","''",$str);
$str=stripslashes($str) );
return $str;
}
//--記事保存処理、つまりテキストエリアフィールド;
function trans_string($str) {
$str=eregi_replace("' ","''" ,$str);
$str=stripslashes($str);
return $str;
}
//--ライブラリからフォームに表示; 変換テキストにtransを含む、テキストエリアでは、変換する必要はなく、直接表示されます。
//--リンクアドレスを含むHTMLコードをフィルタリングして、Webページに表示されます。
function trans($string; ) {
$string=htmlspecialchars($string);
$string=ereg_replace(chr(10),"
",$string);
$string=ereg_replace(chr(32) ," ",$string);
return $string ;
}
//--HTML コードをフィルタリングせずに WEB ページに表示します。
function trans_web($string) {
$string=ereg_replace(chr(10),"
",$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),"
",$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コードが漢字が半分切れるとめちゃくちゃになります。