重複の可能性:
電話番号検証用の包括的な正規表現
PHP: 米国の電話番号の検証
preg_match を使用して電話番号を検証しようとしていますが、正しい形式の電話番号 (111) 111-1111 を入力すると、true ではなく無効な文字エラーが返されます。私の知る限り、正規表現に問題はないと思いますので、ロジックに問題があると思います
function validate_phone_number($phoneNumber, $requiredLength = 14)
{
//Check to make sure the phone number format is valid
for ($i = 0; $i < strlen($_POST[$phoneNumber]); $i++){
if(preg_match('/^\(\d{3}\) \d{3}-\d{4}\$/', $_POST[phoneNumber]{$i}))
{
return true;
}
else
{
return "<h3>" . "The phone number you entered contains invalid characters" . "</h3>";
}
//Check to make sure the number is the required length
if (strlen($_POST[$phoneNumber]) > $requiredLength) {
return "<h3>" . "The phone number you entered contains too many characters" . "</h3>";
}
else if (strlen($_POST[$phoneNumber]) < $requiredLength) {
return "<h3>" . "The phone number you entered does not contain enough characters" . "</h3>";
}
}
return true;
}
関数を呼び出すために使用しているもの
if (count($_POST) > 0) {
$error = array();
$phone = validate_phone_number('phoneNumber');
if($phone !==true) {
$error[] = $phone;
}
if (count($error) == 0) {
//Phone number validates
}
else {
echo "<h2>Error Message:</h2>";
foreach($error as $msg) {
echo "<p>" . $msg . "</p>";
}
}
}