PHP を使用して連絡先フォームを検証しています。次のコードを使用しました。
if (ctype_alpha($name) === false) {
$errors[] = 'Name must only contain letters!';
}
このコードは問題なく動作しますが、検証が過剰であり、スペースを許可しません。試してみましctype_alpha_s
たが、致命的なエラーが発生します。
どんな助けでも大歓迎です
PHP を使用して連絡先フォームを検証しています。次のコードを使用しました。
if (ctype_alpha($name) === false) {
$errors[] = 'Name must only contain letters!';
}
このコードは問題なく動作しますが、検証が過剰であり、スペースを許可しません。試してみましctype_alpha_s
たが、致命的なエラーが発生します。
どんな助けでも大歓迎です
正規表現はやり過ぎで、このような単純なタスクではパフォーマンスが低下します。ネイティブの文字列関数の使用を検討してください。
if (ctype_alpha(str_replace(' ', '', $name)) === false) {
$errors[] = 'Name must contain letters and spaces only';
}
これにより、アルファ チェックを実行する前にスペースが取り除かれます。タブと改行が問題になる場合は、代わりにこれを使用することを検討できます。
str_replace(array("\n", "\t", ' '), '', $name);
ctype_alpha は文字のみをチェックします [A-Za-z]
目的に使用する場合は、まず文字列からスペースを削除してから ctype_alpha を適用する必要があります。
しかし、検証を確認するために preg_match に行きます。このようなことができます。
if ( !preg_match ("/^[a-zA-Z\s]+$/",$name)) {
$errors[] = "Name must only contain letters!";
}
if (ctype_alpha(str_replace(' ', '', $name)) === false) {
$errors[] = 'Name must contain letters and spaces only';
}