Preg 匹配,用于使用 PHP 从页面获取所有类型的电话号码


preg match for get all kind of phone numbers from a page using php

我正在编写一个小脚本,用于从网页中报废电话号码。 此页面具有各种格式的电话号码,如下所示

-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

我使用了一些正则表达式模式,例如

preg_match_all('/(['w+'.]*'w+@['w+'.]*'w+['w+'-'w+]*'.'w+)/is',$pagecontents,$results);
var_dump($results);

但是我想出我怎样才能得到所有这些电话号码。 任何人都可以帮助我使用preg_match或任何其他PHP方式从页面获取各种电话号码。谢谢

根据我清理网站数据的经验,除非您编写所有可能的汇编,否则不可能获取所有电话号码(来自自由文本)。

使用您的文本示例尝试此操作

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

试试这个:'(?'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);