从字符串中删除非字母数字字符(包括ß,Ê等)

Cit*_*guy 2 php regex

是否有一种简单的方法可以从PHP中的字符串中删除所有非字母数字字符,这些字符不需要在正则表达式函数中单独列出它们?

我过去一直在使用preg_replace("/[^a-zA-Z0-9\s\'\-]/", "", $my_string);,但这会过滤掉重要的角色等ÀÈÌÒÙß.

我需要清理名称字段,因此不需要货币和数学字符/符号.

Jür*_*len 6

像这样:

preg_replace('/[^\p{L}\p{N}\s]/u', '', $my_string);
Run Code Online (Sandbox Code Playgroud)

正如arnaud576875已经提到的那样,你应该知道,当u像我一样使用修饰符时,模式被视为UTF-8 .相应手册页的相关摘录:

你(PCRE8)

此修饰符打开与Perl不兼容的PCRE的其他功能.模式字符串被视为UTF-8.此修饰符可从Unix上的PHP 4.1.0或更高版本以及win32上的PHP 4.2.3获得.自PHP 4.3.5起,检查模式的UTF-8有效性.