重複の可能性:
PHPを使用して電話番号を検証する方法は?
入力されたフィールド値がphpを使用して電話番号であるかどうかを検証する方法を教えてもらえますか...SQLデータベースで変数$phone、datatype =varchar10を使用しましたユーザーがその中に数字のみを入力することを検証したいと思います分野..
重複の可能性:
PHPを使用して電話番号を検証する方法は?
入力されたフィールド値がphpを使用して電話番号であるかどうかを検証する方法を教えてもらえますか...SQLデータベースで変数$phone、datatype =varchar10を使用しましたユーザーがその中に数字のみを入力することを検証したいと思います分野..
preg_matchを使用する
if(preg_match('/^(NA|[0-9+-]+)$/',$str)) {
*code here*
} else {
"code here"
}
これを行う1つの方法は、正規表現を使用することです。電話番号を検証するとき、付随する文字を受け入れ、それらを自分で除外すると、ユーザーにとってより簡単になります(-+())。
http://www.php.net/manual/en/function.preg-replace.php
$phone = preg_replace ( '/[+\\.\\(\\) ]/' , '' , $phone);
それが済んだら、10桁の一致をチェックする(米国の番号と市外局番を想定)は、次のように行うことができます。
if(preg_match ( '/^\\d{10}$/', $phone) ) {
// Good match
}
is_numericはあなたの問題を解決しますか?
編集:私はOPの問題を解決することを目的としておらず、単に彼/彼女にポインタを与えることを望んでいました。しかし、質問を詳しく読むと、OPは国際化の問題を意識していないと思います。彼女のフィールドは10文字の長さであるため、+ 447970122467(有効な英国の携帯電話番号)のような番号は失敗の原因になります。それらが北米にあると想定します。そのため、すべての番号が北米番号計画に準拠していると想定できます。これの説明は、言葉で言えば、そのページから取られています:
コンポーネント名番号範囲注
+1 ITU国の通話コード「1」は、NANP番号間の長距離サービスにアクセスするための通常のトランクコードでもあります。NANP内のコンテキストでは、数字は通常、先頭の「+」なしで書き込まれます。
NPA番号計画市外局番許可される範囲:1桁目は[2–9]、2桁目と3桁目は[0–9]。カナダ、米国、カリブ海の一部、および一部の大西洋と太平洋の島々をカバーしています。市外局番は、多くの場合、括弧で囲まれています。
NXXセントラルオフィス(交換)コード許可される範囲:1桁目は[2–9]、2桁目と3桁目は[0–9]。多くの場合、加入者番号の一部と見なされます。3桁のセントラルオフィスコードは、顧客にサービスを提供する特定のCOに割り当てられますが、リダイレクト、または携帯電話会社やその他のサービスへの転送によって物理的に分散される場合があります。
xxxx 4桁のそれぞれの加入者番号[0–9]。この一意の4桁の番号は、加入者番号または駅コードです。`
OPが問題の解決を開始するには、これで十分なはずです。私の最初の応答で素っ気ないことをお詫びします。