如何删除非字母数字字符?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (8)
  • 关注 (0)
  • 查看 (80)

我需要删除所有不在a-z A-Z 0-9范围之间的字符或者是将他们设为空格。

那么这个功能是如何实现的?

提问于
用户回答回答于

你可以将它定义为正则表达式:

preg_replace("/[^A-Za-z0-9 ]/", '', $string);
用户回答回答于
//to remove non english character
$str = preg_replace('/[^\00-\255]+/u', '', $str);
用户回答回答于
用户回答回答于

preg_replace('/[^a-z|\s+]+/i', ' ', $name)能起到很好的效果。

上面的正则表达式将syiraed sirajul7_islam变成了sirajul islam

正则表达式将不区分大小写或不止一个空格地从a到z选中,它将被转换为一个空格。

用户回答回答于
用户回答回答于

以下为一个非常简单的正则表达式:

\W|_

并根据需要使用它(带有正斜杠/斜杠分隔符)

preg_replace("/\W|_/", '', $string);

以下测试工具可以检测正则表达式的作用:

http://www.regexr.com/

用户回答回答于

正则表达式

$str = preg_replace('/[^a-z\d ]/i', '', $str);
  • i代表不区分大小写。
  • ^意思是,不是从哪里开始的意思。
  • \d任何数字都匹配。
  • a-z匹配的是在az之间的字符,i参数可以让你不必指定a-zA-Z
  • \d这里有一个空格,所以在这个正则表达式中是允许空格的。
用户回答回答于

Unicode字符:

preg_replace("/[^[:alnum:][:space:]]/u", '', $string);

扫码关注云+社区