最近、bbs を書いているときにコード変換の問題が発生しました。長い間探した結果、投稿者の元のテキストを完全に復元できる比較的完全な解決策をついに見つけました。
修正のため以下に投稿しました。
システム: Linux php4 oracle8i
//--タイトル、名前、その他のフィールドは処理のためにデータベースに保存されます (先頭と末尾のスペースが削除されます)
関数 trans_string_trim($str) {
$str=trim($str);
$str=eregi_replace("'","''",$str);
$str=ストリップスラッシュ($str);
$str;
を返します
}
//--記事の保存処理、つまり textarea フィールド;
関数 trans_string($str) {
$str=eregi_replace("'","''",$str);
$str=ストリップスラッシュ($str);
$str;
を返します
}
//--ライブラリからフォームに表示されます。テキストではトランス変換を使用します。テキストエリアでは変換は必要なく、直接表示されます
//-- リンク アドレスを含む HTML コードをフィルタリングして WEB ページに表示されます。
関数 trans($string) {
$string=htmlspecialchars($string);
$string=ereg_replace(chr(10),"
",$string);
$string=ereg_replace(chr(32)," ",$string);
$string を返します;
}
//--HTML コードをフィルタリングせずに WEB ページに表示されます
関数 trans_web($string) {
$string=ereg_replace(chr(10),"
",$string);
$string=ereg_replace(chr(32)," ",$string);
$string を返します;
}
//--HTML コードと先頭と末尾のスペースをフィルタリングして WEB ページに表示され、主にユーザーのニックネームを表示するために使用されます
関数 trans_trim($string) {
$string=trim($string);
$string=htmlspecialchars($string);
$string=ereg_replace(chr(10),"
",$string);
$string=ereg_replace(chr(32)," ",$string);
$string を返します;
}
//-- スパンで表示されます
関数 trans_span($string) {
$string=ereg_replace(chr(10),"n",$string);
$string=ereg_replace(chr(32)," ",$string);
$string=ereg_replace('"',""",$string);
$string を返します;
}
//--WEB上にCookieを表示し、HTMLをフィルタリングします
関数 trans_cookie($str) {
$str=trans($str);
$str=ストリップスラッシュ($str);
$str=eregi_replace("''","'",$str);
$str;
を返します
}
?>
------------------------
最後に、ちなみに、記事内の段落をspanで表示し、substrを使用して固定長の文字列を取得する場合、spanパラメータの後に余分なスペースを追加することを忘れないでください。そうしないと、中国語の半分のときにHTMLコードがめちゃくちゃになります。文字がインターセプトされます。
http://www.bkjia.com/PHPjc/632441.html