在WP自定义文章类型中格式化电话号码


Formatting Phone Numbers in WP Custom Post Type

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

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

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

一旦我将数字简化为10或11位的字符串,我希望它具有相应的格式:10位-123-456-789011位-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;
}

但我不知道该在哪里添加,也不知道需要更改什么才能满足我的需求。

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

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

但是很抱歉我不能帮你使用WordPress。我想有一个挂钩后提交?

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;
}