私のPHPスクリプトには、次のコードがあります。
if (!preg_match("/[^A-Za-z]/", $usersurname))
$usersurname_valid = 1;
これは、名前が2つ以上の単語になる可能性があることに気付くまで機能しました... doh。
2つの世界の間に1つのスペースを許可したい場合、誰でもこのコードの書き方を教えてもらえますか?例えば:
Jan Klaasは現在間違っており、Jan Klaasは許可されるべきであり、JanKlaasMartijnなども許可されるべきです。
さらに良いのは、2つ以上のスペースを1に置き換えるpreg replaceです。したがって、
Jan(space)(space)KlaasまたはJan(space)(space)(space)(space)Klaasと書くと、Janが返されます。 (スペース)クラース。
しばらく探し回ったのですが、どういうわけかこのスペースマッチングがうまくいきません。
PS:これが機能するようになったら、もちろんミッドネームとラストネームにもこれを適用します。
===========================================
編集:あなたが私を助けた後、私は私のコードを次のように書き直しました:
// validate usersurname
$usersurname = preg_replace("/\s{2,}/"," ", $usersurname);
if (!preg_match("/^[A-Za-z]+(\s[A-Za-z]+)*$/",$usersurname))
$usersurname_valid = 1;
// validate usermidname
$usermidname = preg_replace("/\s{2,}/"," ", $usermidname);
if (!preg_match("/^[A-Za-z]+(\s[A-Za-z]+)*$/",$usermidname))
$usermidname_valid = 1;
// validate userforename
$userforename = preg_replace("/\s{2,}/"," ", $userforename);
if (!preg_match("/^[A-Za-z]+(\s[A-Za-z]+)*$/",$userforename))
$userforename_valid = 1;
およびエラー通知
elseif ($usersurname_valid !=1)
echo ("<p id='notification'>Only alphabetic character are allowed for the last name. $usersurname $usermidname $userforename</p>");
// usermidname character validation
elseif ($usermidname_valid !=1)
echo ("<p id='notification'>Only alphabetic character are allowed for the middle name. $usersurname $usermidname $userforename</p>");
// userforename character validation
elseif ($userforename_valid !=1)
echo ("<p id='notification'>Only alphabetic character are allowed for the (EDIT) first name. $usersurname $usermidname $userforename</p>");
スペースの交換はうまく機能しており、A-Za-z+スペースをチェックするにはこのpreg_matchが必要です。この場合、とにかく置き換えられるので、1つ以上のスペースに一致するかどうかは問題ではないと思いますよね?
編集:
私の場合の解決策:
$usersurname = preg_replace("/\s{2,}/"," ", $usersurname);
if (!preg_match("/[^A-Za-z ]/", $usersurname))
これで動作します。助けてくれてありがとう、J0HN