[英]regular expression for phone number in php
I am using zend form validation for a phone number.我正在对电话号码使用 zend 表单验证。 and I want, user should enter phone number in these formats:
我想,用户应该以这些格式输入电话号码:
"+91-151-1234567", "01234567891", "+912345678901"
“+91-151-1234567”、“01234567891”、“+912345678901”
so i am using this regular expression:所以我使用这个正则表达式:
"^(?:\+?([0-9]{3})\)?[-. ]?\(?([0-9]{3})\)?[-. ]?([0-9]{10})[-. ]$"
but it is not working.但它不工作。 it is generating error:
它正在产生错误:
Fatal error: Uncaught exception 'Zend_Validate_Exception' with message 'Internal error matching pattern '^(?:+?([0-9]{3}))?[-.
致命错误:未捕获的异常 'Zend_Validate_Exception' 带有消息 '内部错误匹配模式 '^(?:+?([0-9]{3}))?[-. ]?(?([0-9]{3}))?[-.
]?(?([0-9]{3}))?[-. ]?([0-9]{10})[-.
]?([0-9]{10})[-. ]$' against value '+91-151-3297154'' in /var/www/html/allindiazend/library/Zend/Validate/Regex.php:117 Stack trace: #0 /var/www/html/allindiazend/library/Zend/Validate.php(98): Zend_Validate_Regex->isValid('+91-151-3297154')
]$' 对 /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):
1 /var/www/html/allindiazend/library/Zend/Validate.php(98):
Zend_Validate->isValid('+91-151-3297154')
Zend_Validate->isValid('+91-151-3297154')
2 /var/www/html/allindiazend/library/Zend/Filter/Input.php(932):
2 /var/www/html/allindiazend/library/Zend/Filter/Input.php(932):
Zend_Validate->isValid('+91-151-3297154')
Zend_Validate->isValid('+91-151-3297154')
3 /var/www/html/allindiazend/library/Zend/Filter/Input.php(800):
3 /var/www/html/allindiazend/library/Zend/Filter/Input.php(800):
Zend_Filter_Input->_validateRule(Array)
Zend_Filter_Input->_validateRule(Array)
4 /var/www/html/allindiazend/library/Zend/Filter/Input.php(688):
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/allindi in /var/www/html/allindiazend/library/Zend/Validate/Regex.php on line 117
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/allindi in /var/www/html/allindiazend/library/Zend/Validate/Regex.php 在第 117 行
Can any one help me for making this.谁能帮我做这个。
thank you in advance.先感谢您。
This expression will match all your 3 examples:此表达式将匹配您的所有 3 个示例:
\+?([0-9]{2})-?([0-9]{3})-?([0-9]{6,7})
Not sure what part of yours isn't matching, but I just tested an alternative version I wrote and it seems to work for all your examples:不确定您的哪一部分不匹配,但我刚刚测试了我编写的替代版本,它似乎适用于您的所有示例:
^(\+\d{12}|\d{11}|\+\d{2}-\d{3}-\d{7})$
Instead of doing extensive checking of all allowed formats, I would allow any format.我不会对所有允许的格式进行广泛的检查,而是允许任何格式。 You can convert it to a single format (without dashes and parentheses) do all the checking you want, and store each phone number in the same way, so that you can easily retrieve it as well.
您可以将其转换为单一格式(不带破折号和括号)进行所有您想要的检查,并以相同的方式存储每个电话号码,以便您也可以轻松检索它。
If you solve your problem this way, your interface is more user friendly, additional checks are more easily added and your stored phone numbers are better usable for other applications.如果您以这种方式解决问题,您的界面会更加用户友好,更容易添加额外的检查,并且您存储的电话号码可以更好地用于其他应用程序。
Should I create a php script that extracts all the phone numbers listed on a page...我是否应该创建一个 php 脚本来提取页面上列出的所有电话号码...
The numbers may be written in different formats such as: 0039024343333 +39024343333 (0041) 91 999 11 11 +41 (0) 91 999 11 11 0919991111 091 99 911 11 +1 123 344 2244 5 123-344-2244-5 etc..这些数字可以写成不同的格式,例如:0039024343333 +39024343333 (0041) 91 999 11 11 +41 (0) 91 999 11 11 0919991111 091 99 911 11 +1 123 344 2244 5 123-34-2 等。 .
I have tried this script but it works only in part:我已经尝试过这个脚本,但它只能部分工作:
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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.