我想从字符串中数据库电话号码。
我想最终得到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参数的信息?感谢。
答案 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);
答案 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
)