我有一堆文件应该是大部分的html文档,但有时编辑复制&将其他来源的文本粘贴到其中,所以现在我遇到了一些奇怪的字符 - 例如非编码的版权符号,或奇怪的东西,看起来像一个破折号或减号,但是别的东西(ascii#146?),或单个字符看起来像“......”。 我看了一下get_html_translation_table(),但是这只会替换“常见”的特殊字符,如&,欧元符号等,但似乎我需要正则表达式并只指定允许的字符并丢弃所有未知的字符。我想这在这里,但这个没有工作在所有:从html文档中删除无效字符
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(内容类型UTF8,db表字符集UTF8/utf8_general_ci,mysql_set_charset( 'utf-8',$这个 - > mHandle); DB连接建立后执行的大多数导入的文件是UTF8或ISO-8859-1
在我看来,str_replace在这里是一个更简单,更好,更易读的选择,尽管我也喜欢在Halo中使用Scorpion杀死这些咕噜声,这很有趣。 –
看起来像“...”的单个字符被称为省略号...... ......当使用utf-8时,不应该在HTML文档中提出问题。机会是,你做错了什么。请澄清这个问题。 – Gordon