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


67

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

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

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

它仅替换空格。



@mario:这有点不同,因为它处理Unicode。我确定存在完美的副本…
Alix Axel

Answers:


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

13
如果Xeoncross的评论乍一看让其他人感到困惑,那么他的意思是答案支持Unicode字符。但是Xeoncross链接的解决方案可以
2016年

18

首先,这是我会做的

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

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

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

希望这可以帮助!




5
preg_replace('/[\s\W]+/', '', $string)

似乎可以工作,实际上该示例在preg_replace的PHP文档中


1
请记住,这将保留下划线,因为它们被视为单词字符,并且还保留空格
John Conde

我不知道下划线,但没有保留空格。
lisovaccaro 2012年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.