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 に答える