ほとんどの場合、HTMLドキュメントであるはずのファイルがたくさんありますが、エディターが他のソースからテキストをコピーして貼り付けることがあるので、時々奇妙な文字に出くわします-たとえば、非-エンコードされた著作権記号、またはダッシュやマイナスのように見える奇妙なもの (ascii #146?)、または "..." のような単一の文字。get_html_translation_table() を見てみましたが、これは & やユーロ記号などの「通常の」特殊文字のみを置き換えますが、正規表現が必要で、許可された文字のみを指定し、不明な文字をすべて破棄する必要があるようです。ここでこれを試しましたが、これはまったく機能しませんでした:
function fixNpChars($string)
{
//characters in the hexadecimal ranges 00–08, 0B–0C, 0E–1F, 7F, and 80–9F cannot be used in an HTML document, not even by reference.
$pattern = '/[\x{0000}-\x{0008}][\x{000B}-\x{000C}][\x{000E}-\x{001F}][\x{0080}-\x{009F}][x{007F}]/u';
$replacement = '';
return preg_replace($pattern, $replacement, $string);
}
ここで何が問題なのですか?
編集:
インポートしたファイルを保存するデータベースと php 側はすべて utf-8 に設定されています (コンテンツ タイプ utf-8、db テーブル charset utf8/utf8_general_ci、mysql_set_charset('utf8',$this->mHandle); は db 接続後に実行されます)。インポートされたファイルのほとんどは、utf8 または iso-8859-1 のいずれかです。