[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: preg_match()
accept
есть номер, например 89880012101
нужно что было получилось так: 8(988)001-21-01

не знаю какой функцией обработать
preg_match() preg_replace() preg_match_all()
напишите пожалуйста скрипт
Спасибо!
Rand
Примерно так:
$n = '89880012101';
echo preg_replace('/8(\d{3})(\d{3})(\d{2})(\d{2})/', '8($1)$2-$3-$4', $n);
Kopipaster
Цитата (accept @ 10.05.2014 - 12:09)
не знаю какой функцией обработать
preg_match() preg_replace() preg_match_all()

В данном случае не один из методов, так как эти методы ищут совпадения.
Тут надо использовать substr();
пример:
$str = '345678';
echo $str{0};// выводит 3
echo $str{1};// выводит 4
echo substr($str, 0, 1);// выводит 3
echo substr($str, 0, 3);// выводит 345
echo substr($str, 2, 4);// выводит 5678
//теперь объединяем

echo $str{0}."(".substr($str, 1, 3);// выводит 3(456

Только надо понимать что для такой обработки переменная должна быть всегда в виде строки с одинаковым количеством символов. И substr() годится только для цифр и латиницы, для других языков потребуется mb_substr()
Kopipaster
Цитата (Rand @ 10.05.2014 - 12:33)
$n = '89880012101';

что будет если 79880012101 ? wink.gif
Rand
Kopipaster
Регулярные выражения поддерживают альтернативные условия. Формат входного параметра описан в первом посте, решение соответствует задаче.
Kopipaster
Цитата (Rand @ 10.05.2014 - 13:05)
решение соответствует задаче.

Согласен. Просто ТС не правильно поставил задачу и для себя и для других. В таком решении всегда нужен якорь за который надо зацепится.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.