2012-03-21 10 views
2

私は以下のPHPコードを使用して、変数から特殊文字を削除しています。PHP preg_replace特別な文字と一緒に数字を置き換える

<?php 
$name = "my%^[email protected]#name8"; 
$patterns = array('/\s+/' => '_', '/&/' => 'and', '/[^[:alpha:]]+/' => '_'); 
$name2 = preg_replace(array_keys($patterns), array_values($patterns), trim($name)); 
echo $name2; 
?> 

しかし、特殊文字とともに、数字もアンダースコア_に置き換えられています。私は結果に数字を入れたい。これをどうすれば解決できますか?

答えて

5

第3のパターン/[^[:alpha:]]+/は、文字ではないものをアンダースコアで置き換えています。たとえば、/[^[:alpha:]0-9]+/

+0

ありがとうございます:) –

2

のように数字を追加します。'/[^[:alpha:]]+/''/[^[:alpha:][:digit:]]+/'に置き換えます。元の文字は、アルファベットの文字以外のものに置き換わります。 [:digit:]を追加すると、文字や数字ではないものが置き換えられるので、数字も保存されます。

関連する問題