3

ユーザーの姓名を尋ねるフォームを作成していますが、入力したくありません。

$heil4

入ってもらいたい

Sheila

文字以外のすべてを除外する方法は知っていますが、名前によっては

Sheila-McDonald

では、文字とハイフン以外のすべてを文字列から削除するにはどうすればよいでしょうか?

4

4 に答える 4

5

単に使用する

$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)); 
于 2012-11-04T15:39:19.457 に答える
2

$new = preg_replace('#[^A-Z-]#iu', '', $data);

ただし、文字を削除する (したがってユーザーの入力を変更する) 代わりに、文字を検証して、入力が有効でない場合はエラーを表示する方が適切です。このようにして、ユーザーは自分が入力した値がまさにあなたが持っている値であることを知ることができます

if(!preg_match('#[A-Z-]#iu', $data)) echo 'invalid';

于 2012-11-04T15:25:14.723 に答える
2

何もないものに置き換えるのではなく、楽しんでください。そうすれば、主に数字で構成される名前をデコードできます;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));
于 2012-11-04T15:40:11.020 に答える
0

これを使用して、非ラテン文字を除くすべての非英数字、および指定された 句読点を削除します。

$strtochange= preg_replace("/[^\s\p{Pd}a-zA-ZÀ-ÿ]/",'',$strtochange);

注:これはに変わり$heil4ますheil

于 2012-11-04T15:49:18.070 に答える