1

電話番号にzendフォーム検証を使用しています。そして私が欲しいのは、ユーザーはこれらのフォーマットで電話番号を入力する必要があります:

"+ 91-151-1234567"、 "01234567891"、 "+ 912345678901"

だから私はこの正規表現を使用しています:

"^(?:\+?([0-9]{3})\)?[-. ]?\(?([0-9]{3})\)?[-. ]?([0-9]{10})[-. ]$"

しかし、それは機能していません。エラーが発生しています:

致命的なエラー:キャッチされない例外'Zend_Validate_Exception'とメッセージ'内部エラーマッチングパターン'^(?:+?([0-9] {3}))?[-。]?(?([0-9] {3}))?[-。]?([0-9] {10})[-。]$'/var/www/html/allindiazend/library/Zend/Validate/Regex.php:117スタックトレースの値'+91-151-3297154''に対して:#0 / var / www / html / allindiazend / library /Zend/Validate.php(98):Zend_Validate_Regex-> isValid('+ 91-151-3297154')

1 /var/www/html/allindiazend/library/Zend/Validate.php(98):

Zend_Validate-> isValid('+ 91-151-3297154')

2 /var/www/html/allindiazend/library/Zend/Filter/Input.php(932):

Zend_Validate-> isValid('+ 91-151-3297154')

3 /var/www/html/allindiazend/library/Zend/Filter/Input.php(800):

Zend_Filter_Input-> _ validateRule(Array)

4 /var/www/html/allindiazend/library/Zend/Filter/Input.php(688):

Zend_Filter_Input-> _ validate()#5 /var/www/html/allindiazend/library/Zend/Filter/Input.php(430):Zend_Filter_Input-> _ process()#6 /var/www/html/allindiazend/application/controllers /StaticController.php(148):Zend_Filter_Input-> isValid()#7 / var / www / html / allindiazend / library / Zend / Validate/Regex.phpの117行目の/var/ www / html / allindi

誰かがこれを作るのを手伝ってくれますか?

前もって感謝します。

4

4 に答える 4

5

この式は、3つの例すべてに一致します。

\+?([0-9]{2})-?([0-9]{3})-?([0-9]{6,7})
于 2011-06-11T06:35:07.650 に答える
4

あなたのどの部分が一致していないかはわかりませんが、私が書いた別のバージョンをテストしたところ、すべての例で機能するようです。

^(\+\d{12}|\d{11}|\+\d{2}-\d{3}-\d{7})$
于 2011-06-11T06:36:27.723 に答える
2

許可されているすべての形式を徹底的にチェックする代わりに、任意の形式を許可します。単一の形式 (ダッシュと括弧なし) に変換して、必要なすべてのチェックを行い、各電話番号を同じ方法で保存して、簡単に取得できるようにすることができます。

この方法で問題を解決すると、インターフェイスがより使いやすくなり、追加のチェックがより簡単に追加され、保存された電話番号が他のアプリケーションでより使いやすくなります。

于 2011-06-11T06:50:18.750 に答える
0

ページにリストされているすべての電話番号を抽出する php スクリプトを作成する必要がありますか ...

番号は、次のようなさまざまな形式で記述される場合があります。 .

このスクリプトを試しましたが、部分的にしか機能しません:

GetPhoneNumber function ($ txt) {
$ regexp = '/ ([+ \ \ s]) {1,3} ([0-9 \ \ s] {2,5}) -? ([0-9 \ \ s] {2,5}) -? ([0-9 \ \ s] {2,20}) / ';

preg_match_all ($ regexp, $ txt, $ m);


return isset ($ m [0])? $ m [0]: array ();
}

$ fulltxt = file_get_contents ('http://wiki.wikimedia.it/wiki/Contatti');
$ phonenumber = GetPhoneNumber ($ fulltxt);
print_r ($ phonenumber);
于 2013-10-03T10:04:06.030 に答える