PHP, как удалить неязыковые символы из строки? - PullRequest
0 голосов
/ 25 января 2012

как я могу удалить все символы не на языке?

Я хочу удалить символы, подобные приведенным ниже, и все другие не языковые символы:



я использую это:

preg_replace("/[^a-z0-9A-Z\-\'\|\!\.\?\:\)\(\;\*\"]/u", " ", $text );

это хорошо для английского, мне нужно одобрить все языковые символы, такие как русский, арабский, иврит, япония ...

Есть ли строковые функции, которые я могу использовать, чтобы оставить все языковые символы?

спасибо

Ответы [ 2 ]

11 голосов
/ 25 января 2012

Никакое регулярное выражение не будет идеальным для того, что вы хотите - язык и письмо слишком сложны для этого.Но приближение может быть

preg_replace('/[^\p{L}\p{M}\p{Z}\p{N}\p{P}]/u', ' ', $text);

. Это заменит все пробелом, не являющимся символом Юникода, с одним из свойств «буква», «знак», «разделитель», «число» или «пунктуация»..

0 голосов
/ 16 мая 2015

Ответ Тима Пицкера не работает в моем случае.

Это работает.

$after = preg_replace('/[^\w\s]+/u','' , $before);
...