Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
// function phone($number, $format = '[1] [(3)] 3-2-2'){
echo phone('+7 812 123 45 67'); // +7 (812) 123-45-67
echo phone('8 812 123 45 67'); // 8 (812) 123-45-67
echo phone('8121234567'); // (812) 123-45-67
echo phone('1234567'); // 123-45-67
$format = '[([1 ]4)] 2-2-2';
echo phone('+78121234567', $format); // (+7 8121) 23-45-67
echo phone('88121234567', $format); // (8 8121) 23-45-67
echo phone('8121 23 45 67', $format); // (8121) 23-45-67
echo phone('234567', $format); // 23-45-67substr($phone, 0,1)=='1'Что это? $phone[0] == '1'
$phone = preg_replace("/[^0-9A-Za-z]/", "", $phone);Ваша функция не понимает UTF-8? Какую кодировку она вообще-то требует?
не читал, но вот вам сообщение из будущего, с моей наивной реализацией поиска телефонов в тексте:
document.documentElement.outerText
.match(/(\+?((\s|\(|\)|\-|)|\d+)+\d+)+/g)
.map((raw) => ({ raw, fmt: raw.replace(/\D/g, "") }))
.filter(({ fmt }) => fmt.length >= 9)
.map(({ raw, fmt }) => {
if (fmt.length === 11 && ["8", "7"].includes(fmt[0])) {
return { raw, fmt: `+7 (${fmt.slice(1, 4)}) ${fmt.slice(4, 7)}-${fmt.slice(7, 9)}-${fmt.slice(9, 11)}` };
}
if (fmt.length === 10 && "9" === fmt[0]) {
return { raw, fmt: `+7 (${fmt.slice(0, 3)}) ${fmt.slice(3, 6)}-${fmt.slice(6, 8)}-${fmt.slice(8, 10)}` };
}
})
.filter(Boolean);не продакшен реди, но теперь мы можем взять raw и заменить его на fmt в тексте
Форматирование телефонных номеров на PHP