我也在寻找答案,我的目的是清理每一个非alpha,并且不应该有多个空格 . 所以,我修改了Alex对此的回答,这对我有用 preg_replace('/[^a-z|\s+]+/i', ' ', $name) 以上正则表达式将 sy8ed sirajul7_islam 变为 sy ed sirajul islam 说明:正则表达式将在 insensitive 方式中从a到z检查 NOT ANY 或多个空格,并且它将被转换为单个空格 .
606
我用这个:
//to remove non english character
$str = preg_replace('/[^\00-\255]+/u', '', $str);
9 回答
听起来你几乎已经知道你想要做什么,你基本上把它定义为正则表达式 .
对于unicode字符,它是:
Regular expression是你的答案 .
i
代表不区分大小写 .^
表示,不是以...开头 .\d
匹配任何数字 .a-z
匹配a
和z
之间的所有字符 . 由于i
参数,您不必指定a-z
和A-Z
.\d
之后有一个空格,因此这个正则表达式允许空格 .这是一个非常简单的正则表达式:
并根据需要使用它(使用前向
/
斜杠分隔符) .在这里用这个很好的工具测试它,解释正则表达式正在做什么:
http://www.regexr.com/
它选择所有不是A-Z,a-z,0-9并删除它 .
请参见此处的示例:https://regexr.com/3h1rj
你可以在这里测试一下:http://regexr.com/
如果您需要支持其他语言,而不是典型的A-Z,您可以使用以下语言:
[^\p{L}\p{N} ]
定义了一个否定的(它将匹配一个 not 定义的字符)字符类:\p{L}
:来自任何语言的信件 .\p{N}
:任何脚本中的数字字符 .`` :一个空格字符 .
+
贪婪地匹配1和无限次之间的字符类 .这将保留其他语言和脚本以及A-Z中的字母和数字:
注意:这是一个非常古老但仍然相关的问题 . 我的回答纯粹是为了提供可能对未来访客有用的补充信息 .
我也在寻找答案,我的目的是清理每一个非alpha,并且不应该有多个空格 .
所以,我修改了Alex对此的回答,这对我有用
preg_replace('/[^a-z|\s+]+/i', ' ', $name)
以上正则表达式将
sy8ed sirajul7_islam
变为sy ed sirajul islam
说明:正则表达式将在 insensitive 方式中从a到z检查 NOT ANY 或多个空格,并且它将被转换为单个空格 .
我用这个: