1

次のような入力があります。

<textarea name='phone_number' id='phone_number' cols='80' rows='1'><? echo $_POST['phone_number']; ?></textarea>

さて、私はPHPで電話番号を検証する関数を作成しました(空ではなく、文字が含まれていないこと、+と数字だけであることを確認してください)

そして、私はいくつかのJQuery / JavaScriptのものを使ってその入力でインラインでフォーマットしたいのですが、フォーマットは私が持っている場合のような国際的なものを考えています:

0016073222153することが+1 607-322-2153

0049329351525することが+49 329-351-525

どうすればこれを行うことができますか?感謝します !ありがとう!

4

3 に答える 3

1

私は多くのことを想定していますが、それはあなたのユースケースに合っていて、あなたが始めるかもしれません

var num1 = "0016073222153",
    num2 = "0049329351525";

$(document).ready(function() {

    $('body').append(
        phoneFormat(num1) + "<br />" + 
        phoneFormat(num2)
    );
});

function phoneFormat(num) {

    num = num.replace(/^0+/, '');
    num = num.replace(/[^0-9]/, '');

    if (num.length == 11) {

        if (num.substr(0, 1) == 1) num = "+1 " + num.substr(1, 3) + "-" + num.substr(4, 3) + "-" + num.substr(7, 4);
        else num = "+" + num.substr(0, 2) + " " + num.substr(2, 3) + "-" + num.substr(5, 3) + "-" + num.substr(8, 3);
    }

    return num;
}​

http://jsfiddle.net/tnv2m/

于 2012-08-22T23:47:34.883 に答える
0

国コードの場合、これはそれほど複雑ではなく (私が思うに)、ちょっと面倒な作業です。

ここで国コードのリストを取得できます。次に、最初の数字を取得し、次の数字を読み取る必要があるかどうかを呼び出し元のコード テーブルから判断します。国コードがわかるまで繰り返します。

残りの数値については、次のようにすることができます。

join('-', str_split($nr, 3));

これにより、ダッシュで区切られた 3 桁のグループが得られます。

于 2012-08-22T23:26:18.297 に答える
0

普遍的な方法でそれを行うことはできません。国ごとにフォーマットやゾーン番号などが異なります。そのすべての書式設定ルールを保持する正確なデータベースがなければ、どこにも行きません。ルールを知っている国をフォーマットするか、アイデアを削除します。

于 2012-08-22T23:26:25.630 に答える