函数只返回字符串中的字母数字字符?

时间:2011-03-04 20:53:09

标签: php regex

我正在寻找一个php函数,它将获取一个输入字符串,并通过删除所有特殊字符而只返回字母数字来返回它的清理版本。

我需要第二个执行相同操作的函数,但只返回字母字符A-Z。

任何帮助都非常感激。

2 个答案:

答案 0 :(得分:184)

警告:请注意,英语不仅限于A-Z。

尝试this删除除a-z,A-Z和0-9之外的所有内容:

$result = preg_replace("/[^a-zA-Z0-9]+/", "", $s);

如果您对字母数字的定义包括外语和过时脚本中的字母,那么您将需要使用Unicode字符类。

尝试this只留下A-Z:

$result = preg_replace("/[^A-Z]+/", "", $s);

警告的原因是像简历这样的字词包含与此字母不匹配的字母é。如果要匹配特定的字母列表,请调整正则表达式以包含这些字母。如果要匹配所有字母,请使用注释中提到的相应字符类。

答案 1 :(得分:0)

而不是preg_replace,您可以始终使用filter_var()函数FILTER_SANITIZE_STRING来{{1}}使用PHP's filter functions