Как заменить все нет алфавитных символов в 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);

свойство Unicode для буквы -\pL, Не письмо \PL

$str = preg_replace('/\PL+/u', '', $str);