1
私はしかし、コードもダッシュでアクセント文字を置き換えて、ダッシュとスペースを置き換えたい:はダッシュですべてのスペースを置き換えではなく、アクセント文字 - PHP
私はアクセント付きの文字を残すにはどうすればよい$username = preg_replace("![^a-Z0-9]+!i", "-", $username);
ダッシュでは置き換えられませんか?
私はしかし、コードもダッシュでアクセント文字を置き換えて、ダッシュとスペースを置き換えたい:はダッシュですべてのスペースを置き換えではなく、アクセント文字 - PHP
私はアクセント付きの文字を残すにはどうすればよい$username = preg_replace("![^a-Z0-9]+!i", "-", $username);
ダッシュでは置き換えられませんか?
スペースを変更するだけの場合は、正規表現でスペースを一致させてみてください。
$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é
こんにちは、お返事に感謝しかし、このそれはあなたがより具体的でした – user3903810
を働いていないのですか?おそらく例? – SEoF
私はあなたの提案を試みましたが、何も問題なく動作しているようです。「![^ a-Z0-9 \] +!i」というコードは、私が必要とするものに近いと思われ、唯一の問題はアクセント付きの文字です。ダッシュで置換されます。あなたと一緒に試してみると、間違いがあります。言葉が直接現れていないようです。 – user3903810