70

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

这是我目前正在使用的代码:

$url = preg_replace('/\s+/', '', $string);

它只替换空格。

4

6 回答 6

133
$url = preg_replace('/[^\da-z]/i', '', $string);
于 2012-07-04T00:40:13.023 回答
19

起初这就是我的做法

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

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

var_dump($outcome);
//string(11) "qwertyHello"

希望这可以帮助!

于 2012-07-04T01:27:54.150 回答
14

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

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

您也可以在这里看到它的实际效果:http: //phpfiddle.org/lite/code/0sg-314

于 2013-07-30T13:05:39.280 回答
8

您可以使用,

$url = preg_replace('/[^\da-z]/i', '', $string);

您可以用于 unicode 字符,

$url = preg_replace("/[^[:alnum:][:space:]]/u", '', $string);
于 2017-06-26T07:31:03.847 回答
5
preg_replace('/[\s\W]+/', '', $string)

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

于 2012-07-04T00:42:57.797 回答
3
$alpha = '0-9a-z'; // what to KEEP
$regex = sprintf('~[^%s]++~i', preg_quote($alpha, '~')); // case insensitive

$string = preg_replace($regex, '', $string);
于 2012-07-04T00:55:58.800 回答