web-dev-qa-db-ja.com

preg_replaceを使用して、英数字以外の文字をすべて削除します

PHPの文字列からすべての非英数字を削除するにはどうすればよいですか?

これは私が現在使用しているコードです:

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

空白スペースのみを置き換えます。

62
lisovaccaro
$url = preg_replace('/[^\da-z]/i', '', $string);
117
John Conde

最初にこれを行う方法です

$str = '[email protected]#[email protected]#$^@#$Hello%#$';

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

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

お役に立てれば!

18
sevenadrian

他の誰もこれを提案していない理由はわかりませんが、これは最も単純な正規表現のようです:

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

ここでも動作を確認できます: http://phpfiddle.org/lite/code/0sg-314

14
Chuck Le Butt
preg_replace('/[\s\W]+/', '', $string)

動作しているようです、実際には例はPHP preg_replaceのドキュメントにありました

4
lisovaccaro
$alpha = '0-9a-z'; // what to KEEP
$regex = sprintf('~[^%s]++~i', preg_quote($alpha, '~')); // case insensitive

$string = preg_replace($regex, '', $string);
3
Alix Axel

使用できます

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

Unicode文字に使用できますが、

$url = preg_replace("/[^[:alnum:][:space:]]/u", '', $string);
3
Damith Ruwan