来自数据库的PHP电话号码格式

时间:2018-05-15 07:40:35

标签: php database preg-replace

我想从字符串中数据库电话号码。

我想最终得到1112223333所有这些结果

(111)222-3333
111-222-3333
111.222.3333
+11112223333
11112223333

(国家代码为1)

我能够使用preg_replace('/\D/', '', mysqli_real_escape_string($conn, $_POST["phone"]));

完成除最后一次之外的所有操作

有人可以帮我解决最后一个问题吗?

是否还有人可以提供的参考资料,以便我可以阅读有关per_replace参数的信息?感谢。

4 个答案:

答案 0 :(得分:1)

使用preg_replace除了最后一个之外的所有内容。接下来,计算字符串的长度,如果超过9个数字,则删除第一个数字。

preg_replace('/\D/', '', mysqli_real_escape_string($conn, $_POST["phone"]));

if(strlen($str) > 9){

$str = substr($str, 1);

}

答案 1 :(得分:1)

如果您想解析电话号码,一个非常有用的库是giggsey/libphonenumber-for-php。它基于谷歌的libphonenumber,它还有一个在线演示to show how it works

答案 2 :(得分:0)

将str_replace与要删除的字符数组一起使用。

$str = "(111)222-3333 111-222-3333 111.222.3333 +11112223333";

echo str_replace(["(", ")", "-", "+", "."], "", $str);

https://3v4l.org/80AWc

答案 3 :(得分:0)

分两次通过:

$phone = [
'(111)222-3333',
'111-222-3333',
'111.222.3333',
'+11112223333',
'11112223333',
'+331234567890',
];

# remove non digit
$res = preg_replace('/\D+/', '', $phone);
# keep only 10 digit
$res = preg_replace('/^\d+(\d{10})$/', '$1', $res);
print_r($res);

<强>输出:

Array
(
    [0] => 1112223333
    [1] => 1112223333
    [2] => 1112223333
    [3] => 1112223333
    [4] => 1112223333
    [5] => 1234567890
)