是否有一种简单的方法可以从PHP中的字符串中删除所有非字母数字字符,这些字符不需要在正则表达式函数中单独列出它们?
我过去一直在使用preg_replace("/[^a-zA-Z0-9\s\'\-]/", "", $my_string);,但这会过滤掉重要的角色等ÀÈÌÒÙß.
我需要清理名称字段,因此不需要货币和数学字符/符号.
像这样:
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有效性.