Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Регулярное выражение

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: вывод телефонного момера
Saymor
Отправлено: 17 Мая, 2011 - 12:37:27
Post Id



Новичок


Покинул форум
Сообщений всего: 52
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Господа помогите советом!

есть номера телефонов в БД в виде 11231234567, надо вывести номер в виде 1-123-123-45-67 ?
 
 Top
Viper
Отправлено: 17 Мая, 2011 - 12:50:08
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




зачем регулярку-то?

PHP:
скопировать код в буфер обмена
  1. $number = '11231234567';
  2. echo substr($number , 0, 1).'-'.substr($number , 1, 3).'-'.substr($number , 4, 3).'-'.substr($number , 7, 2).'-',substr($number , 9);


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
DeepVarvar Супермодератор
Отправлено: 17 Мая, 2011 - 12:50:55
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Или:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $tlf = "11231234567";
  3. echo preg_replace("#^(\d)(\d{3})(\d{3})(\d{2})(\d{2})$#","\$1-\$2-\$3-\$4-\$5",$tlf);
  4. ?>

// [0-9] сменил на \d

(Отредактировано автором: 17 Мая, 2011 - 12:58:14)

 
 Top
Saymor
Отправлено: 17 Мая, 2011 - 13:03:29
Post Id



Новичок


Покинул форум
Сообщений всего: 52
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




DeepVarvar пишет:
$tlf = "11231234567";
echo preg_replace("#^(\d)(\d{3})(\d{3})(\d{2})(\d{2})$#","\$1-\$2-\$3-\$4-\$5",$tlf);


айайай как Вы мне помогли, спасли так сказать...
низкий поклон! Дайте Ваш qiwi кошель..
 
 Top
DeepVarvar Супермодератор
Отправлено: 17 Мая, 2011 - 13:07:16
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Saymor пишет:
Дайте Ваш qiwi кошель..

Да не надо ничего... Так пользуйтесь.
 
 Top
Stierus Супермодератор
Отправлено: 17 Мая, 2011 - 16:23:14
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




http://dev[dot]mysql[dot]com/doc/refman/[dot][dot][dot]nction_substring может помочь обойтись средствами только mysql
 
My status
 Top
vsll
Отправлено: 17 Мая, 2011 - 18:22:41
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 530
Дата рег-ции: Февр. 2011  


Помог: 10 раз(а)




Stierus пишет:
http://dev[dot]mysql[dot]com/doc/refman/[dot][dot][dot]nction_substring может помочь обойтись средствами только mysql

Идея хорошая, а можно примерный код, если не сложно, что-то я пробовала у меня не получилось, в гугле только простейшие примеры Растерялся
 
 Top
EuGen Администратор
Отправлено: 17 Мая, 2011 - 18:54:41
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Примерно так
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT concat(substr(`number` , 1, 1),'-',substr(`number` , 2, 3),'-',substr(`number` , 5, 3),'-',substr(`number` , 8, 2),'-',substr(`number` , 10)) FROM `table`

Однако возражу на
Stierus пишет:
может помочь обойтись средствами только mysql

всегда и везде БД - не калькулятор, а хранилище данных. Если что-то можно переложить на php - так и надо сделать. В разумных пределах, конечно (то есть если нужно например, сгруппировать выборку, то пусть это делает MySQL, хотя в PHP теоретически тоже можно).


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
vsll
Отправлено: 17 Мая, 2011 - 19:00:10
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 530
Дата рег-ции: Февр. 2011  


Помог: 10 раз(а)




EuGen спасибо уже в цатый раз вам, наверное, и что отработает быстрее, а что безопаснее в данном случае php или mysql ?
 
 Top
EuGen Администратор
Отправлено: 17 Мая, 2011 - 19:03:10
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Безопаснее?.. да одинаково - Вы же просто форматируете вывод, не принимая пользовательских данных.
Если в БД огромное число строк то php будет заметно быстрее конечно. У БД как правило и других задач много, кроме как вывод форматировать.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Stierus Супермодератор
Отправлено: 17 Мая, 2011 - 20:53:33
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




Если нужн селект - то лучше форматировать в php, если масс-инсерт - то нужны замеры, скорее всего одним запросом будет шустрее.
 
My status
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB