我已尝试多次使用preg_match_all
获取一些电话号码。
我想要得到的东西,没有问题是这些结构:
09123456789
+989123456789
989123456789
0912 345 6789
+98 912 345 6789
如何使用preg_match_all查找顶部数字?
他们可能有空格。
所有这些都可能以+98
或98
国家/地区代码
然后拨打号码必须以9
或0
开头。
我试过这样:(但它并不适用于所有人)
/[+989][09]*([0-9]{9,})/i
答案 0 :(得分:1)
答案 1 :(得分:1)
我想你想要这样的东西,
(?:\+?98|0)(?:\s*\d{3}){2}\s*\d{4}
<?php
$str = <<<EOT
09123456789
+989123456789
989123456789
0912 345 6789
+98 912 345 6789
EOT;
$regex = '~(?:\+?98|0)(?:\s*\d{3}){2}\s*\d{4}~';
preg_match_all($regex, $str, $matches);
print_r($matches);
?>
输出:
Array
(
[0] => Array
(
[0] => 09123456789
[1] => +989123456789
[2] => 989123456789
[3] => 0912 345 6789
[4] => +98 912 345 6789
)
)