Подтвердить что ты не робот

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

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

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

Спасибо

4b9b3361

Ответ 1

Существует класс символов юникода, который вы можете использовать:

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

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

Ответ 2

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

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

Ответ 4

Возможно, это будет полезно?

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