在字符串中查找电话号码

Dyl*_*lan 2 php split explode

在PHP中,我正在搜索特定文本中的语音.我explode()用来分隔不同部分的文本,使用我正在搜索的城市的区号作为分隔符.问题是包含区号相同数字的phonenumbers 不能很好地返回.

例如:

"foofoo 010-1234567 barbar"分裂成"foofoo ""-1234567 barbar"

"foofoo 010-1230107 barbar"分裂成"foofoo ","-123""7 barbar"!

我可以使用第一个用areacode重建phonenummer,但第二个当然错了...

我想我需要一个正则表达式来分割文本,使用某种机制分裂在短字符串上,而不是explode(),但我不知道该怎么做.

在文本中搜索phonenumbers的任何想法或更好的方法?

更新: 格式不一致,因此寻找连字符是没有解决方案的.有些电话号码在区号和号码之间有空格,有些有挂钩,有些没有,等等.荷兰语的电话号码有2,3或4个号码,通常总共10个号码.

sam*_*ore 7

要找到如下电话号码:

  • 010-1234010
  • 010 1234010
  • 010 123 4010
  • 0101234010
  • 010-010-0100

试试这个:

$text = 'foofoo 010-1234010 barbar 010 1234010 foofoo ';
$text .= ' 010 123 4010 barbar 0101234010 foofoo 010-010-0100';

$matches = array();

// returns all results in array $matches
preg_match_all('/[0-9]{3}[\-][0-9]{6}|[0-9]{3}[\s][0-9]{6}|[0-9]{3}[\s][0-9]{3}[\s][0-9]{4}|[0-9]{9}|[0-9]{3}[\-][0-9]{3}[\-][0-9]{4}/', $text, $matches);
$matches = $matches[0];

var_dump($matches);
Run Code Online (Sandbox Code Playgroud)