使用preg_replace删除所有非字母数字字符

lis*_*aro 64 php regex preg-replace

如何从PHP中的字符串中删除所有非字母数字字符?

这是我正在使用的代码:

$url = preg_replace('/\s+/', '', $string);
Run Code Online (Sandbox Code Playgroud)

它只替换空格.

Joh*_*nde 121

$url = preg_replace('/[^\da-z]/i', '', $string);
Run Code Online (Sandbox Code Playgroud)

  • 如果其他人暂时被Xeoncross的评论搞糊涂了,他的观点是答案*不支持Unicode字符.但Xeoncross'链接*中的解决方案确实*. (13认同)
  • [这个答案支持unicode](http://stackoverflow.com/a/17151182/99923) (6认同)

小智 18

首先,我就是这样做的

$str = 'qwerty!@#$@#$^@#$Hello%#$';

$outcome = preg_replace("/[^a-zA-Z0-9]/", "", $str);

var_dump($outcome);
//string(11) "qwertyHello"
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!


Chu*_*utt 14

不知道为什么没有人建议这个,但这似乎是最简单的正则表达式:

preg_replace("/\W|_/", "", $string)
Run Code Online (Sandbox Code Playgroud)

你也可以在这里看到它:http://phpfiddle.org/lite/code/0sg-314


Dam*_*wan 8

您可以使用,

$url = preg_replace('/[^\da-z]/i', '', $string);
Run Code Online (Sandbox Code Playgroud)

您可以使用 unicode 字符,

$url = preg_replace("/[^[:alnum:][:space:]]/u", '', $string);
Run Code Online (Sandbox Code Playgroud)


lis*_*aro 5

preg_replace('/[\s\W]+/', '', $string)
Run Code Online (Sandbox Code Playgroud)

似乎有效,实际上该示例在 preg_replace 的 PHP 文档中