У меня есть куча файлов, которые должны быть 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 utf8/utf8_general_ci, mysql_set_charset('utf8',$this->mHandle); выполняется после подключения к db Большинство импортируемых файлов имеют формат utf8 или iso-8859-1.
…/…
и не должен создавать проблем в HTML-документе при использовании utf-8. Скорее всего, вы делаете что-то не так. Пожалуйста, уточните вопрос. - person Gordon   schedule 04.07.2011