Как сделать регулярное выражение, чтобы удалить все специальные символы (?. = + И т. Д.), Но следует разрешить китайский / Япония / корейский символ - PullRequest
1 голос
/ 14 июля 2010

Китайский / японский / корейский символ является двухбайтовым или Unicode.

Ответы [ 2 ]

3 голосов
/ 14 июля 2010

Следующее регулярное выражение должно работать;\p{P} соответствует пунктуации, а \p{S} соответствует символам .

preg_replace("/\p{P}|\p{S}/u", "", $s);

Я не смог проверить это, потому что мой pcre не поддерживает \p, \x и т. Д. Iполучено сообщение об ошибке:

Предупреждение PHP: preg_replace(): Сбой компиляции: поддержка \P, \p и \X не скомпилирована по смещению 1 в test.php на линии3

Если вы получили эту ошибку, эта страница описывает исправление

1 голос
/ 14 июля 2010

Функции mb_ereg реализуют регулярные выражения с поддержкой нескольких байтов. Однако вам действительно нужно более точно указать, что вы подразумеваете под «специальным символом».

Редактировать: Я думаю, что вам нужны классы символов Unicode , поддерживаемые в PCRE, но я не уверен, поддерживаются ли они функциями mb_ereg или preg работа с многобайтовыми строками.

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