正则表达式:显示所有电话号码

时间:2019-01-28 13:20:42

标签: php regex

我想查看字符串中的所有电话号码。现在它在数组“ match”中只有一个数字,我如何才能获得数组中的所有数字?

$str = "djvdsfhis 0647382938 rdfrgfdg tel:0647382938 rfgdfgfd 06 47 38 29 
38 fdgdfrggfd tel:06-47382938 cxgvfdgsfdc";
$arr = '~\d{2}-\d{8}|\d{10}~';
$success = preg_match($arr, $str, $match);
if ($success) {
    echo "Match: ".$match[0]."<br />"; 
    print_r($match);
}

我得到这个作为输出:

djvdsfhis ffgfg 0647382938 rdfrgfdg tel:0647382938 rfgdfgfd 06 47 38 29 38 fdgdfrggfd tel:06-47382938 cxgvfdgsfdc

Match: 0647382938
Array ( [0] => 0647382938 )

但是我想要这样的数组:

Array ( [0] => 0647382938 [1] => 0647382938 [2] => 06-47382938

2 个答案:

答案 0 :(得分:7)

您应该使用preg_match_all。它将输出一个正则表达式所有结果的数组,在本例中为数字数组。

$str = "djvdsfhis 0647382938 rdfrgfdg tel:0647382938 rfgdfgfd 06 47 38 29 
38 fdgdfrggfd tel:06-47382938 cxgvfdgsfdc";
$arr = '~\d{2}-\d{8}|\d{10}~';
$success = preg_match_all($arr, $str, $match);
if ($success) {
    print_r($match);
}

在这里测试:

http://sandbox.onlinephpfunctions.com/code/350d10b1be46ce3a5851d7671750bac28f9110f0

答案 1 :(得分:0)

您还可以使用具有自动定界符的T-Regx tool

pattern('\d{2}-?\d{8}')->match($str)->all();