1

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

-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 方式从页面获取各种电话号码。谢谢你

4

3 回答 3

1

试试这个\(?\d+\)?(\s*\d+){3}

于 2013-10-12T13:21:27.800 回答
1

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

$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);
于 2013-10-12T13:24:35.870 回答
1

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

使用你的文本示例试试这个

preg_match_all('/(ph:|ph |phone)([\(\)\d or\-]+?)([^\(\)\d or\-]|$)/is',$pagecontents,$results);
var_dump($results[2]);
于 2013-10-12T13:26:13.480 回答