我有一个名为"联系人"的自定义帖子类型和一个名为" 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;
}
但我无法确定在哪里添加,或者需要更改哪些内容才能满足我的需求。
答案 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;
}