首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用php从页面中获取各种电话号码的preg匹配

使用php从页面中获取各种电话号码的preg匹配
EN

Stack Overflow用户
提问于 2013-10-12 13:09:55
回答 3查看 1.3K关注 0票数 1

我正在写一个小脚本的废电话号码从网页。此页面有不同格式的电话号码,如下所示

代码语言:javascript
运行
复制
-PH:(07) 46 3000 66, BUSINESS HOURS, 9-5 MON-FRI, 9-12 SAT-SUN.
-Please phone 54974211 or 0411053074 both between 10 am – 8 pm or 
-or Phone 07 5497 1000 if you get 
-Email or ph 0755431528. 
-Phone 0414 791 796 
-Or ph 0418117617

我使用了一些regx模式,比如

代码语言:javascript
运行
复制
preg_match_all('/([\w+\.]*\w+@[\w+\.]*\w+[\w+\-\w+]*\.\w+)/is',$pagecontents,$results);
var_dump($results);

但我不知道怎么才能得到这么多的电话号码。任何人都可以帮助我使用preg_match或任何其他PHP方式从页面中获取各种电话号码。谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-10-12 13:26:13

根据我从网站清理数据的经验,除非你会写所有可能的折算,否则不可能把所有电话号码(免费文本)都拿走。

使用您的文本示例,尝试如下

代码语言:javascript
运行
复制
preg_match_all('/(ph:|ph |phone)([\(\)\d or\-]+?)([^\(\)\d or\-]|$)/is',$pagecontents,$results);
var_dump($results[2]);
票数 1
EN

Stack Overflow用户

发布于 2013-10-12 13:21:27

尝试使用这一个\(?\d+\)?(\s*\d+){3}

票数 1
EN

Stack Overflow用户

发布于 2013-10-12 13:24:35

您可以尝试使用此模式,演示:

代码语言:javascript
运行
复制
$pattern = '~(?>(\()?0\d(?(1)\))\s?+)?+\d\d\s?+(?>\d{3}\s?\d{3}|(?:\d\d\s??){3})~';
$subject = <<<'LOD'
-PH:(07) 46 3000 66, BUSINESS HOURS, 9-5 MON-FRI, 9-12 SAT-SUN.
-Please phone 54974211 or 0411053074 both between 10 am – 8 pm or 
-or Phone 07 5497 1000 if you get 
-Email or ph 0755431528. 
-Phone 0414 791 796 
-Or ph 0418117617
LOD;

preg_match_all($pattern, $subject, $matches);

print_r($matches);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19334566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档