preg match用于使用php从页面获取所有类型的电话号码

preg match用于使用php从页面获取所有类型的电话号码,php,regex,preg-match,Php,Regex,Preg Match,我正在为网页上的废弃电话号码编写一个小脚本。此页面有各种格式的电话号码,如下所示 -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 7

我正在为网页上的废弃电话号码编写一个小脚本。此页面有各种格式的电话号码,如下所示

-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模式,比如

preg_match_all('/([\w+\.]*\w+@[\w+\.]*\w+[\w+\-\w+]*\.\w+)/is',$pagecontents,$results);
var_dump($results);
但我想知道怎么才能得到这些电话号码。任何人都可以帮助我使用preg_match或任何其他PHP方式从页面获取各种电话号码。
谢谢

尝试:
\(?\d+\)(\s*\d+{3}
您可以尝试此模式,演示:

$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);
$pattern='~(?>(\())0\d(?(1)\)\s?+)+\d\d\s?+(?>\d{3}\s?\d{3}\124;(?:\ d\d\s???{3})~;

$subject=根据我清理网站数据的经验,除非你写下所有可能的答案,否则不可能获取所有电话号码(来自免费文本)

使用您的文本示例尝试以下内容

preg_match_all('/(ph:|ph |phone)([\(\)\d or\-]+?)([^\(\)\d or\-]|$)/is',$pagecontents,$results);
var_dump($results[2]);

获取错误preg_match_all()[function.preg match all]:分隔符不能是字母数字或反斜杠是的,实际上我只发布了正则表达式,要在
preg_match_all php函数中使用它
,你必须用
/
封装它并转义一些字符。这很有效,但得到的结果是PH:(07)46 3000 66,这样我们就可以去掉PH:,比如。谢谢,这也是谷歌的分析代码和adsence账号作为电话号码。我认为需要一些增强:)@smithbandara:尝试添加单词边界或查找范围,以检查周围是否没有数字。