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



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

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

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

像这样:

preg_replace('/[^p{L}p{N}s]/u', '', $my_string);

正如arnaud576875已经提到的,您应该意识到,当像我这样使用u修饰符时,模式被视为UTF-8。相关手册页摘录:

u (PCRE8)

此修饰符打开PCRE的附加功能,即与Perl不兼容。模式字符串被视为UTF-8。这在Unix和PHP的PHP 4.1.0或更高版本中都可以使用modifier4.2.3在win32上。从PHP开始检查模式的UTF-8有效性4.3.5 .

使用unicode分类:

preg_replace("/[^pLpNp{Zs}'-]/u", "", $my_string);

最新更新