我有一堆文件,这些文件大部分应该是 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 table charset utf8/utf8_general_ci,mysql_set_charset('utf8',$this->mHandle);在db连接后执行成立,大部分导入的文件要么是utf8要么是iso-8859-1。