Форматирование телефонных номеров в пользовательском типе записей WP

У меня есть пользовательский тип записи под названием «контакты» и мета-поле ввода «phone_number».

Существует множество способов ввода этих телефонных номеров: т.е. 1234567890 / 123-456-7890 / (123) 456-7890 / 1-123-456-7890 / и т. Д.

Я хочу добавить функцию, которая удаляет все пробелы, скобки и тире и создает строку из 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

Решение

Чтобы заменить все, что не является цифрой, вы можете использовать:

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

Но извините, я не могу помочь вам с WordPress. Я предполагаю, что есть крюк на пост отправить?

1

Другие решения

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;

}
0

По вопросам рекламы [email protected]