ユーザーの姓名を尋ねるフォームを作成していますが、入力したくありません。
$heil4
入ってもらいたい
Sheila
文字以外のすべてを除外する方法は知っていますが、名前によっては
Sheila-McDonald
では、文字とハイフン以外のすべてを文字列から削除するにはどうすればよいでしょうか?
単に使用する
$s = preg_replace("/[^a-z-]/i", "", $s);
Jean-Rémy
または、 toなどの一部の非ASCII文字をASCIIに変換する場合はJean-Remy
、次を使用します
$s = preg_replace("/[^a-z-]/i", "", iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $s));
$new = preg_replace('#[^A-Z-]#iu', '', $data);
ただし、文字を削除する (したがってユーザーの入力を変更する) 代わりに、文字を検証して、入力が有効でない場合はエラーを表示する方が適切です。このようにして、ユーザーは自分が入力した値がまさにあなたが持っている値であることを知ることができます
if(!preg_match('#[A-Z-]#iu', $data)) echo 'invalid';
何もないものに置き換えるのではなく、楽しんでください。そうすれば、主に数字で構成される名前をデコードできます;p
$name = '$h3il4-McD0nald';
$find = array(0,1,3,4,5,6,7,'$');
$replace = array('o','l','e','a','s','g','t','s');
$name = str_replace($find,$replace,$name);
//Sheila-McDonald
echo ucfirst(preg_replace('/[^a-z-]/i', '', $name));