У меня есть пользовательский тип записи под названием «контакты» и мета-поле ввода «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;
}
Но я не могу понять, где это добавить, или что нужно изменить, чтобы это работало для моих нужд.
Чтобы заменить все, что не является цифрой, вы можете использовать:
$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;
}