ホームページ > バックエンド開発 > PHPチュートリアル > 電話番号の形式を検証するための PHP 正規表現方法

電話番号の形式を検証するための PHP 正規表現方法

WBOY
リリース: 2023-06-24 08:24:02
オリジナル
1485 人が閲覧しました

PHP を使用して Web サイトやアプリケーションを開発する場合、多くの場合、ユーザーが入力したデータの形式検証を実行する必要があります。電話番号の形式は地理的位置、通信事業者、国際標準によって異なる場合があるため、電話番号は一般的な検証オブジェクトの 1 つです。この場合、PHP 正規表現を使用すると、電話番号の形式を効果的に検証できます。この記事では、PHP 正規表現を使用して電話番号の形式を確認する方法を紹介します。

1. 電話番号形式の要件
電話番号は、数字、スペース、括弧、プラス記号で構成される文字列です。具体的な要件は次のとおりです。

  1. にはスペースを含めることも、スペースを含めないこともできます。
  2. は括弧を含めることも、括弧を含めないこともできますが、括弧がある場合は、左右の括弧を同時に出現させる必要があります。
  3. にはプラス記号を付けることも、プラス記号を付けないこともできますが、プラス記号がある場合は、先頭に国際電話を示す必要があります。
  4. 数字の数は 7 ~ 15 桁である必要があります。

2. PHP 正規表現を使用して電話番号の形式を確認する

  1. 基本ルール
    PHP 正規表現を使用して電話番号の形式を確認するには、 preg_match関数。この関数の 3 つのパラメーターは、正規表現ルール、照合する文字列、およびオプションの照合結果配列 (照合の特定の結果を取得する場合) です。以下は、基本的な電話番号形式を検証するための正規表現です:
$regex = "/^(+?d{1,3}[ .-()]?)?d{7,15}$/";
ログイン後にコピー

具体的な分析は次のとおりです:

  • /^ まず始めに、/i ではありません。大文字と小文字を区別。
  • ( ?d{1,3}[ .-()]?)? は、市外局番の前のプラス記号と市外局番内の特殊文字に一致します。
  • d{7,15}$ 電話番号の数字部分は 7 ~ 15 文字にする必要があります。
  1. 完全なコード
    以下は、PHP 正規表現を使用して電話番号形式を検証する完全なコードです:
function validatePhoneNumber($phoneNumber) {
    $regex = "/^(+?d{1,3}[ .-()]?)?d{7,15}$/";
    return preg_match($regex, $phoneNumber);
}

if (validatePhoneNumber("1234567")) {
    echo "验证成功!";
} else {
    echo "验证失败。";
}
ログイン後にコピー

上記のコードは、ファイルは validatePhoneNumber 関数という名前で、電話番号の形式を確認するために使用されます。次に、if ステートメントを使用して、指定された電話番号 (1234567) で関数を呼び出し、検証結果に基づいて適切なメッセージを出力します。

3. 一般的なエラーと解決策

  1. 冗長なエスケープ文字
    正規表現で冗長なエスケープ文字を使用すると、一致が失敗する可能性があります。たとえば、上記のコードではエスケープ文字「 」を使用していますが、これは不要です。正しい書き方は「?」です。さらに、入力文字列に「*」や「」などの予約文字が含まれている場合は、それらをエスケープする必要があります。エスケープしないと、正規表現が予期しない動作をする可能性があります。
  2. 市外局番の特殊なケース
    一部の国または地域の電話番号には、特殊な市外局番形式が含まれる場合があります。この状況では、検証のために正規表現にルールを追加できます。たとえば、中国の市外局番は 3 ~ 4 桁の数字で、括弧で囲まれる場合と括弧で囲まれない場合があります。この場合、次の正規表現を使用できます。
$regex = "/^(+?d{1,3}[ .-()]?)?((d{3,4})|(d{3,4}))[ .-()]?d{7,8}$/";
ログイン後にコピー

上記の正規表現を使用すると、括弧の有無にかかわらず、3 ~ 4 桁の市外局番を入力できます。

  1. 貪欲マッチング
    正規表現を使用する場合、貪欲マッチングを使用すると、マッチングの失敗や予期しないマッチング結果が発生する可能性があります。たとえば、検証に次の正規表現を使用するとします。
$regex = "/^(+?d{1,3}[ .-()]?)?.{7,15}$/";
ログイン後にコピー

この正規表現では、数字だけでなく任意の文字を入力できます。したがって、文字または記号を含む文字列は検証に合格する可能性があります。これを回避するには、「{7,15}」の代わりに「{7,15}?」を使用するなど、必要に応じて非貪欲一致を使用します。

4. 概要
PHP 正規表現を使用して電話番号の形式を確認する場合は、次の点に注意する必要があります。地理的な場所、演算子、国際標準によって異なるため、さまざまな状況に対応する正規表現を記述する必要があります。

    正規表現を作成するときは、予約文字のエスケープと貪欲な一致の問題に注意する必要があります。
  1. 電話番号を検証するための正規表現を関数にカプセル化すると、コードがより明確かつ簡潔になり、保守が容易になります。

以上が電話番号の形式を検証するための PHP 正規表現方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート