Регулярное выражение для удаления не буквенно-цифровых символов из строк UTF8 Как я могу удалить символы, такие как пунктуация, запятые, тире и т.д. из строки, с многобайтовой безопасностью? Я буду работать с вводами из разных языков, и мне интересно, есть ли что-то, что может мне помочь с этим Спасибо Ответ 1 Существует класс символов юникода, который вы можете использовать: http://www.regular-expressions.info/unicode.html http://php.net/manual/en/regexp.reference.unicode.php Чтобы сопоставить любые небуквенные символы, вы можете просто использовать \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 ); Ответ 3 Похожие сообщения Удалить символы не-utf8 из строки Я не уверен, что это касается всех символов. В соответствии с этим сообщением на форуме dreamincode http://www.dreamincode.net/forums/topic/78179-regular-expression-to-remove-non-ascii-characters/ это должно работать /[^\x{21}-\x{7E}\s\t\n\r]/ Ответ 4 Возможно, это будет полезно? $newstring = preg_replace('/[^0-9a-zA-Z\s]/', $oldstring);
Ответ 1 Существует класс символов юникода, который вы можете использовать: http://www.regular-expressions.info/unicode.html http://php.net/manual/en/regexp.reference.unicode.php Чтобы сопоставить любые небуквенные символы, вы можете просто использовать \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 );
Ответ 3 Похожие сообщения Удалить символы не-utf8 из строки Я не уверен, что это касается всех символов. В соответствии с этим сообщением на форуме dreamincode http://www.dreamincode.net/forums/topic/78179-regular-expression-to-remove-non-ascii-characters/ это должно работать /[^\x{21}-\x{7E}\s\t\n\r]/