2009-05-08 19 views
28

英数字(a-zおよび0-9)以外の文字列をすべて置き換えることができるregexpまたは他の文字列が必要です。 ,@#$(@*810などのすべてのものは削除する必要があります。何か案は?PHPの文字列から英数字を除くすべての文字を取り除く

編集:すべてを削除するにはこれを必要としますが、ドットを許可するには、a-z, 1-9, .以外はすべてが必要です。アイデア?

$string = preg_replace ('/[^a-z0-9]/i', '', $string); 

/私はケース非感受性の略(あなたがそれを必要とする場合、当然の):

答えて

56
$string = preg_replace("/[^a-z0-9.]+/i", "", $string); 

a-zではない1つ以上の文字にマッチします。0-9 [大文字小文字を区別しない]または "。" "と置き換えられます"

+0

ドットだけを許可するにはどうすれば変更できますか? –

+0

"。"を含むように調整されました。 – gnarf

+1

文字セット内のドットをエスケープする必要はありません。 – Gumbo

2
/[^a-z0-9.]/ 

はトリック

+0

どのようにしてドット(つまり)のみを許可するように変更できますか? –

+0

@ Click Upvote: '[^。] – Gumbo

+0

完全な登録をお願いしますか?構文は分かりません –

1

試しを行う必要があります。

18

私はこのために[^ [:alnum:]]を使用します。

preg_replace('/[^[:alnum:]]/', '', "(ABC)-[123]"); // returns 'ABC123' 
0

これは、数字、単語文字、またはピリオドではないものをアンダースコアで置き換えるためにも機能します。ファイル名に便利です。

$clean = preg_replace('/[^\d\w.]+/', '_', $string);