1

電話番号を検証しようとしていますが、スペースや特殊文字を使用できない 10 桁のみが必要です (例: 0123456789)。5 桁のみを除く郵便番号 (例: 01234) も同様です。

これは、これまでのところ電話番号フィールドにあるものです。

$phone = stripslashes($_POST['phone']);

if(!$phone || $phone == "Phone Number*")
{
$error .= "Please enter your phone number.<br />";
}

次の if ステートメントは、"有効な電話番号を入力してください。例: "0123456789" のようなエラーを取得する必要があります。

4

5 に答える 5

10

If you don't want to use regular expressions, take a look at ctype_digit

For example:

if(strlen($phone)==10 && ctype_digit($phone)) {
    //valid
} else {
    //invalid
}

I can't testify to whether this will be faster or slower than regular expressions, but I would reckon it's probably moot. It's more or less what makes the most sense to you.

于 2012-08-13T21:39:17.703 に答える
2

ここで正規表現を試すことができます:

if(preg_match('/^[0-9]{10}$/', $phone)){
    // valid
}else{
    // Not valid
}

そのようなものは、数字と10文字のみを保証します。郵便番号の 10 を 5 に変更するだけです。

$_POST['phone']アクセス時に が設定されていない場合はE_NOTICE、次のヒントが表示されます。

$phone = isset($_POST['phone']) ? stripslashes($_POST['phone']) : null;

if(!$phone) // ERROR
于 2012-08-13T21:37:49.267 に答える
1
$phone = stripslashes($_POST['phone']);

if(!$phone || $phone == "Phone Number*")
{
$error .= "Please enter your phone number.<br />";
}

if(!preg_match('/^\d{10}$/', $phone)) $error .= "Please enter phone number as ##########.<br />";

そして郵便番号のために

if(!preg_match('/^\d{5}$/', $zip)) $error .= "Please enter your zip code as #####.<br />";

これにより、外国の郵便番号(長さが異なる場合や文字が含まれる場合があります)は許可されないことに注意してください。


他のいくつかの提案も(不要なエラーメッセージを防ぐために)

次のような操作を行うことで、123-456-7890が1234567890になるようにユーザー入力を処理することができます。

preg_replace('/[^\d]/','',$input)

たぶん、trim($input)先頭/末尾の空白を削除するために


最後に、$ _ POST ['phone']でストリップスラッシュを使用している特別な理由はありますか?期待どおりにすべて数字である場合、これは必要ありません。すべての数字でない場合は、関係なくエラーがスローされます

于 2012-08-13T21:40:41.183 に答える
0

how about:

function check($number,$length)
{
  if(ctype_digit ($number) && strlen($number)==$length)
    return true;
  else
    return false;
}


if(check("1234",4))
  echo "ok";
else
  echo "Please enter a valid phone number. Example: "0123456789";
于 2012-08-13T21:46:06.987 に答える