2017-11-23 3 views

答えて

2

スペースを変更するだけの場合は、正規表現でスペースを一致させてみてください。

$username = preg_replace("![ ]+!i", "-", $username); 

私はまた、エスケープ文字\に対して推薦する - 彼らは(二重引用符付きので、より多くの)両方のPHPの文字列の中に何かを意味すると正規表現での習慣を持っています。

\wは任意の単語文字と一致し、\dは任意の数値と一致します。したがって、![^\w\d]+!iuは英数字以外のものと一致します。

$username = preg_replace('![^\\w\\d]+!iu', '-', $username); 

注意、iが大文字と小文字を区別しないになり、uは、それが安全UNICODEなります。

例:

echo preg_replace('![^\\w\\d\\\\]+!iu', '-', 'this is a testé'); 

出力this-is-a-testé

+0

こんにちは、お返事に感謝しかし、このそれはあなたがより具体的でした – user3903810

+0

を働いていないのですか?おそらく例? – SEoF

+0

私はあなたの提案を試みましたが、何も問題なく動作しているようです。「![^ a-Z0-9 \] +!i」というコードは、私が必要とするものに近いと思われ、唯一の問題はアクセント付きの文字です。ダッシュで置換されます。あなたと一緒に試してみると、間違いがあります。言葉が直接現れていないようです。 – user3903810

関連する問題