PHP 去除非整数并将输出重新格式化为电话号码



我正在尝试一种方法,无论插入到数据库中的电话号码如何插入,都遵循相同的约定。

如此(123) 456.7890123.456.7890

最终都会以123-456-7890的形式进入数据库

我认为必须有一个函数可以让我去除所有非整数字符,以便123.456.7890可以转换为1234567890然后将其重新格式化为xxx-xxx-xxxx

也许我错了,但我认为 php 必须有一种方法来完成这些事情,因此任何帮助将不胜感激。

// Remove any non-number character
$str = preg_replace('/[^d]/', '', $str);
// Insert dashes
$str = preg_replace('/(d)(?=(d{4}|d{7})$)/', '$1-', $str);

这是小提琴:http://codepad.viper-7.com/pQlwVw

只需一个微不足道的正则表达式就可以做到:

$nums = preg_replace("/D/","",$input);

理想情况下,您应该将其保存为该格式,并且仅在输出中格式化它,这将像这样完成:

$output = preg_replace("/(...)(...)(....)/","$1-$2-$3",$nums);
这样

的东西会起作用(从 如何将 10 位字符串格式化为电话号码?

$phone = preg_replace("/[^0-9]/", "", $phone);
echo "(".substr($phone, 0, 3).") ".substr($phone, 3, 3)."-".substr($phone,6);

下面是一个 7 位或 10 位数字的正则表达式,允许使用扩展名,分隔符是空格、破折号或句点:

^(?:(?:+?1s*(?:[.-]s*)?)?(?:(s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])s*)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))s*(?:[.-]s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})s*(?:[.-]s*)?([0-9]{4})(?:s*(?:#|x.?|ext.?|extension)s*(d+))?$

或者你可以使用大锤方法:去掉任何非数字的东西,并按照你心满意足的格式。

相关内容

  • 没有找到相关文章

最新更新