Как заменить все не алфавитно-цифровые символы с пробелом в PHP? - PullRequest
4 голосов
/ 05 апреля 2011
$html=strip_tags($html);
$html=ereg_replace("[^A-Za-zäÄÜüÖö]"," ",$html);
$words = preg_split("/[\s,]+/", $html);

Разве это не заменяет все символы (не A-Z, a-z, a o u с умлаутами) пробелом? Я теряю такие слова, как zugänglich и т. Д. С умлаутами

Что-то не так с регулярным выражением?

редактирование:

Я заменил ereg_replace на preg_replace, но почему-то специальные символы, такие как:, ®, не заменяются пробелом ...

Ответы [ 3 ]

3 голосов
/ 05 апреля 2011

Если вы добьетесь успеха с вашим подходом, прежде всего, зависит от кодировки.Когда все умлауты удалены, вполне вероятно, что ваш исходный текст (или скрипт php) был закодирован как UTF-8.

В этом случае лучше использовать:

$text = preg_replace('/[^\p{L}]/u', " ", $text);

Это будет соответствовать всем буквперсонажи, а не просто умлаутс.И /u решает вашу вероятную проблему с кодировкой.

0 голосов
/ 05 апреля 2011

регулярное выражение должно быть /[^A-Za-zäÄÜüÖö]+/

0 голосов
/ 05 апреля 2011

Возможно, ваши умляуты по-прежнему являются html-сущностями (& auml; и т. Д.), Которые содержат не алфавитно-цифровые символы, которые будут удалены ...

Кстати: буквенно-цифровые символы - это не просто буквы a-Z, а цифры ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...