Регулярное выражение для удаления не буквенно-цифровых символов из строк UTF8

Как я могу удалить символы, такие как пунктуация, запятые, тире и т. Д. Из строки, с многобайтовой безопасностью?

Я буду работать с различными языками, и мне интересно, есть ли что-то, что может помочь мне с этим

благодаря

Есть класс символов unicode, который вы можете использовать:

Чтобы сопоставить любые небуквенные символы, вы можете просто использовать \PL+ , отрицание \p{L} . Чтобы не удалять пробелы, используйте charclass, например [^\pL\s]+ . Или просто просто удалите знаки препинания с помощью \pP+

Ну и, очевидно, не забудьте модификатор regex /u .

Я использовал это:

 $clean = preg_replace( "/[^\p{L}|\p{N}]+/u", " ", $raw ); $clean = preg_replace( "/[\p{Z}]{2,}/u", " ", $clean ); 

Похожие сообщения

Удалить символы не-utf8 из строки

Я не уверен, что это касается всех персонажей.

Согласно этому сообщению на форуме dreamincode

http://www.dreamincode.net/forums/topic/78179-regular-expression-to-remove-non-ascii-characters/

это должно работать

 /[^\x{21}-\x{7E}\s\t\n\r]/ 

Может быть, это будет полезно?

 $newstring = preg_replace('/[^0-9a-zA-Z\s]/', $oldstring);