正则表达式,用于检测PHP中的错误电话号码

时间:2014-09-11 08:12:17

标签: php regex phone-number

我正在尝试构建一个正则表达式来检测错误的电话号码并将其替换为原始电话号码。我有电话号码,在带有文字(带有html标签)的文本字段中是错误的号码(网站的用户喜欢在数字之间放置各种字符由于某种原因)。以下是我使用的在大多数情况下工作正常但不是全部:

$phone = '0888123123';
$text = 'Some html text with variants of the phone number in wrong format - 
0~8~8~8~1~2~3~1~2~3
0.8.8.8.1.2.3.1.2.3
0 8 8 8 1 2 3 1 2 3
0888-123-123
The last format does not work!';

preg_match_all('/('.implode('[\D]+', str_split($phone)).')/i', strip_tags($text), $matches);

if (count($matches) > 0) {
   foreach($matches as $value) {
      $text = str_replace($value, $phone, $text);
   }
}

我尝试在数字之间找到任何非数字字符,但只有当这个非数字字符位于所有数字之间时才有效,即0.8.8.8.1.2.3.1.2.3,但它不匹配0888-123- 123。这个正则表达式中是否有一些补充以捕获其余的情况?

1 个答案:

答案 0 :(得分:0)

[^\d\n]

你可以尝试一下。参见演示。

http://regex101.com/r/nB2lL9/6