0

以前は、次のような米国のみの番号に対してのみ preg_match を使用する必要がありました。

elseif(!preg_match("/^[0-9]{3}-[0-9]{3}-[0-9]{4}$/", $telefon))
    {
        $error = "Your message has not been sent as you did not enter your telephone number, please try again.";
        selected_values();
    }

ただし、英国とドイツの番号を組み込むために拡張する必要はありません。

これらの数値は、多くの場合、[スペース] と (ブラケット) でフォーマットされます。

私は少し成功して次のことを試しました:

elseif(!preg_match("/^[0-9]$/", $telefon))

多くの異なるバリエーションの電話番号を組み込んだ preg_match を手伝ってくれる人はいますか?

ありがとう

4

1 に答える 1

0

英国の数字については、ここにかなり良い答えがあります。(受け入れられた答えではありません!コメントが言うように、それは良い答えではありません)

しかし、一般的に国際電話番号を受け入れようとしている場合は、受け入れる内容についてかなりオープンにする必要があります。括弧やスペースに加えて、プラス記号、ドット、ハイフン、スラッシュなどを使用している人もいるかもしれません.

国際電話番号のフォーマットには、次のような認識されている標準があります。

+44.1234567890

は、国際ダイヤルコード (この場合+44は英国) で、その後にドットが続き、その後に残りの数字 (該当する場合は先頭のゼロを引いたもの) が続き、他の書式はありません。

もちろん、ユーザーが使用している形式に関係なく数値を入力する必要がある場合は役に立ちませんが、この形式をターゲットと見なす場合、つまり、ユーザーが入力したものをすべて受け入れて、この規格に再フォーマットします。

そうすることに決めたら、プロセスは単にメインの数字からフォーマットを取り除くだけのケースになります。桁数が正しい限り、提供されるフォーマットについて心配する必要はありません。次に、国コードとドットを先頭に追加するだけで完了です。

于 2013-02-01T11:50:28.863 に答える