在WP自定义帖子类型中格式化电话号码

时间:2014-10-24 15:28:54

标签: php string-formatting phone-number

我有一个名为"联系人"的自定义帖子类型和一个名为" phone_number"的元框输入。

这些电话号码输入的方​​式有很多种:即。 1234567890 / 123-456-7890 /(123)456-7890 / 1-123-456-7890 / etc。

我想添加一个删除所有空格,括号和短划线的函数,并生成一个10位数字符串或一个11位数字符串(对于长途数字,开头是+1国家代码)。

一旦我将数字简化为10或11位数字符串,我希望它相应地格式化: 10位数 - 123-456-7890 11位数 - 1-123-456-7890

我发现另外一个提到使用它的线程:

function format_phone($phone) {
$phone = preg_replace("/[^0-9]/", "", $phone);

if(strlen($phone) == 7)
    return preg_replace("/([0-9]{3})([0-9]{4})/", "$1-$2", $phone);
elseif(strlen($phone) == 10)
    return preg_replace("/([0-9]{3})([0-9]{3})([0-9]{4})/", "($1) $2-$3", $phone);
else
    return $phone;
}

但我无法确定在哪里添加,或者需要更改哪些内容才能满足我的需求。

2 个答案:

答案 0 :(得分:1)

要替换任何非数字的东西,您可以使用:

$phone = preg_replace("/[^\d]*/","", $phone);

但对不起,我无法用WordPress帮助你。我猜帖子提交时有一个钩子吗?

答案 1 :(得分:0)

function format_phone($phone) {
$phone = preg_replace("/[^0-9]/", "", $phone);

if(strlen($phone) == 10)
    return preg_replace("/([0-9]{3})([0-9]{3})([0-9]{4})/", "$1-$2-$3", $phone);
else if(strlen($phone) == 11)
    return preg_replace("/([0-9]{1})([0-9]{3})([0-9]{3})([0-9]{4})/", "$1-$2-$3-$4", $phone);
else return false;

}