У меня есть куча файлов, которые по большей части должны быть 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);
}
Есть идеи, что здесь не так?
EDIT:
База данных, в которой я храню свои импортированные файлы и сторона php, настроена на utf-8 (тип содержимого utf-8, кодировка таблицы базы данных utf8 / utf8_general_ci, mysql_set_charset ('utf8', $ this-> mHandle); выполнена; после установления соединения с БД. Большинство импортируемых файлов - это либо utf8, либо iso-8859-1.