Очень полезное преимущество должно было бы отметить изменения на языке. Например,
<p>Welcome to Audi UK, <span lang="de">Vorsprung durch Technik</span>.</p>
Программы экранного доступа с несколькими возможностями языка могли использовать это.
, Таким образом, они не представляемы, просто универсальны. На самом деле промежутки редко представляемы, обеспечивание семантически значимого имени класса используется, как "орфографическая ошибка" и не "полужирный красный текст".
Учитывая, что вы хотите заменить только несколько конкретных и хорошо идентифицированных символов, я бы выбрал str_replace
с массивом: вам, очевидно, не нужно регулярное выражение для тяжелой артиллерии. принести вам; -)
И если вы встретите какие-то другие специальные символы (чертовски копипаст из Microsoft Word ...), вы можете просто добавить их в этот массив, когда это необходимо / когда они будут идентифицированы.
лучший ответ, который я могу дать на ваш комментарий, вероятно, это ссылка: Преобразование умных котировок с помощью PHP
И связанный с ним код (цитируя эту страницу) :
function convert_smart_quotes($string)
{
$search = array(chr(145),
chr(146),
chr(147),
chr(148),
chr(151));
$replace = array("'",
"'",
'"',
'"',
'-');
return str_replace($search, $replace, $string);
}
(у меня нет Microsoft Word на этом компьютере, поэтому я не могу проверить самостоятельно)
Я точно не помню, что мы использовали на работе (мне не приходилось иметь дело с таким вводом) ,но то же самое ...
Ваши кавычки, закодированные Microsoft , вероятно, типографические кавычки . Вы можете просто заменить их на str_replace
, если вы знаете кодировку строки, в которой вы хотите их заменить.
Вот пример для UTF-8, но с использованием одного массива сопоставления с strtr
:
$quotes = array(
"\xC2\xAB" => '"', // « (U+00AB) in UTF-8
"\xC2\xBB" => '"', // » (U+00BB) in UTF-8
"\xE2\x80\x98" => "'", // ‘ (U+2018) in UTF-8
"\xE2\x80\x99" => "'", // ’ (U+2019) in UTF-8
"\xE2\x80\x9A" => "'", // ‚ (U+201A) in UTF-8
"\xE2\x80\x9B" => "'", // ‛ (U+201B) in UTF-8
"\xE2\x80\x9C" => '"', // “ (U+201C) in UTF-8
"\xE2\x80\x9D" => '"', // ” (U+201D) in UTF-8
"\xE2\x80\x9E" => '"', // „ (U+201E) in UTF-8
"\xE2\x80\x9F" => '"', // ‟ (U+201F) in UTF-8
"\xE2\x80\xB9" => "'", // ‹ (U+2039) in UTF-8
"\xE2\x80\xBA" => "'", // › (U+203A) in UTF-8
);
$str = strtr($str, $quotes);
Если вам нужна другая кодировка, вы можете использовать mb_convert_encoding
для преобразования ключей.
Мы использовали следующее. Он имеет дело с еще несколькими специальными символами.
$text = str_replace(chr(130), ',', $text); // Baseline single quote
$text = str_replace(chr(132), '"', $text); // Baseline double quote
$text = str_replace(chr(133), '...', $text); // Ellipsis
$text = str_replace(chr(145), "'", $text); // Left single quote
$text = str_replace(chr(146), "'", $text); // Right single quote
$text = str_replace(chr(147), '"', $text); // Left double quote
$text = str_replace(chr(148), '"', $text); // Right double quote
$text = mb_convert_encoding($text, 'HTML-ENTITIES', 'UTF-8');