Как заменить все нет алфавитных символов в PHP с поддержкой utf-8
Я хочу, чтобы удалить любой не алфавитный символ из строки.
но проблема в том, что я не знаю диапазон букв, потому что это строка UTF8.
это может быть английский, ՀԱՅԵՐԵՆ ,ააიი,
Я обычно делаю что-то подобное
$str = preg_replace('/[^a-zA-Z]/', '', $str);
или
$str = preg_replace('/[^w]/u', '', $str);
но они оба очищают иностранные символы
есть идеи?
3 ответов
обновление: Что касается Unicode, RegExp будет выглядеть так [^\p{L}\s]+
(без замены пробелов)
он заменит все не-альфа-символы с поддержкой UTF8.
-
\P{L}+
- заменяет любые символы -
\p{P}+
- удаляет только знаки препинания
вот некоторые справочные документы, которые могут быть полезны:
использовать свойства Unicode-символов:
$str = preg_replace('/\P{L}+/u', '', $str);