関数があることは知っていますが、これは文字列にスペース(空白文字)が含まれている場合にctype_alpha
返されます。FALSE
英字とスペースを許可するにはどうすればよいですか?
$is_alpha_space = ctype_alpha(str_replace(' ', '', $input)));
また
$is_alpha_space = preg_match('/^[a-z\s]*$/i', $input);
if (preg_match("^/[a-zA-Z ]+$/", $input)) {
// input matches
}
デモ: http: //ideone.com/jp6Wi
ドキュメント:http://php.net/manual/en/function.preg-match.php
ctype_alpha(preg_replace('/\s/', '', $mystring))
内部式はスペースなしで文字列を返し、必要に応じてctype_alpha``を使用します
スペースを削除するのが最善の方法ですが、最近はctype_alphaによって空の文字列がfalseになることを覚えておいてください。私が使用する方法の下で...
function validateAlpha($valueToValidate, $spaceAllowed = false) {
if ($spaceAllowed) {
$valueToValidate = str_replace(' ', '', $valueToValidate);
}
if (strlen($valueToValidate) == 0) {
return true;
}
return ctype_alpha($valueToValidate);
}
Simple regexとphp関数preg_match()を次のように回避します。
if(preg_match("/^[a-zA-Z ]+$/", $varToCheck)){
//your code here
}
ここで重要な部分は、必要な部分を識別する正規表現です。私の場合、名前フィールドに、ここの場合のようにスペースを含むテキストが必要でした。[az]はaからzまでの範囲で、AZはAからの範囲です。 Zに移動し、末尾の「」はスペースを表します。
これが誰かを助けることを願っています。