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 :: Вставить 1 символ в текстовую строку после каждых 2-ух символов

 PHP.SU

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


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

> Без описания
OgStyle
Отправлено: 30 Июля, 2014 - 13:42:54
Post Id


Гость


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


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




Друзья есть строка вида:

11223344

Я хочу получить на выходе строку:

11-22-33-44

Для этого я пробовал вот такое выражение:

PHP:
скопировать код в буфер обмена
  1. $phone_code = preg_replace('(.{2})', '-', $phone_code);


В данный момент на выходе получаю : ----

В чем моя ошибка? можете помочь с регуляркой?
 
 Top
Panoptik
Отправлено: 30 Июля, 2014 - 14:30:36
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


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




PHP:
скопировать код в буфер обмена
  1. $returnValue = preg_replace('/(.{2})(?=.)/', '$1-', '11223344');


-----
Just do it
 
 Top
OgStyle
Отправлено: 30 Июля, 2014 - 14:36:14
Post Id


Гость


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


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




Cпасибо большое! Работает! Все отлично!
 
 Top
Tyoma5891
Отправлено: 30 Июля, 2014 - 14:50:04
Post Id


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


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


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




старайтесь не пользоваться по возможности регулярками)
PHP:
скопировать код в буфер обмена
  1.  
  2. $str = "11223344";
  3. $s = "-";
  4. $out = "";
  5. for ($i = 0; $i < strlen($str); $i++)
  6. {
  7.         if ($i%2 == 0 && $i !== 0)
  8.         {
  9.                 $out .= $s;
  10.         }
  11.         $out .= $str[$i];
  12. }
  13. echo $out;
  14.  
 
 Top
Panoptik
Отправлено: 30 Июля, 2014 - 14:52:24
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


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




ну если уж на то дело, то так будет короче


-----
Just do it
 
 Top
Tyoma5891
Отправлено: 30 Июля, 2014 - 14:59:15
Post Id


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


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


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




Panoptik пишет:
ну если уж на то дело, то так будет короче

ну это Вы профессор в функциях php Улыбка
а если на скорую руку и без справочников мой вариант беспроигрышный, да и по ресурсам меньше затратный Подмигивание
 
 Top
Мелкий Супермодератор
Отправлено: 30 Июля, 2014 - 15:06:22
Post Id



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


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


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




Tyoma5891 пишет:
старайтесь не пользоваться по возможности регулярками)

Аргументируйте.
Регулярки повышают технический долг, но ваш пример ещё хуже. Его надо внимательно читать, чтобы понять, что получится на выходе.


-----
PostgreSQL DBA
 
 Top
Tyoma5891
Отправлено: 30 Июля, 2014 - 15:17:46
Post Id


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


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


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




Мелкий пишет:
Tyoma5891 пишет:
старайтесь не пользоваться по возможности регулярками)

Аргументируйте.
Регулярки повышают технический долг, но ваш пример ещё хуже. Его надо внимательно читать, чтобы понять, что получится на выходе.

чтобы правильно составить регулярное выражение нужно изучить всю эту кухню с символами, масками и т.д. Да и сама работа честно говоря на мой взгляд у этих функций стремная. Честно говоря мне непонятно что в моем примере нужно внимательно читать там все элементарно цикл по все длине строки и условие если четное или не ноль то добавляем символ, если нет пишем строку дальше , все Улыбка
 
 Top
Panoptik
Отправлено: 30 Июля, 2014 - 15:52:17
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


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




просто, доступно и наглядно за 1 час или около того можно понять всю кухню регулярок

http://phpclub[dot]ru/detail/article/regexp_1
http://phpclub[dot]ru/detail/article/regexp_2


-----
Just do it
 
 Top
esterio
Отправлено: 30 Июля, 2014 - 16:01:30
Post Id



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


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


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




Tyoma5891 пишет:
старайтесь не пользоваться по возможности регулярками)

И чем плохи регуляркы? как по мне так один из самых замечательных инструментов придуманых когда-либо
 
 Top
Tyoma5891
Отправлено: 30 Июля, 2014 - 16:03:37
Post Id


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


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


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




esterio пишет:
Tyoma5891 пишет:
старайтесь не пользоваться по возможности регулярками)

И чем плохи регуляркы? как по мне так один из самых замечательных инструментов придуманых когда-либо

Да я не говорю что они плохи, просто механизм их работы немного стремноватый вот и всего...
 
 Top
Ch_chov
Отправлено: 30 Июля, 2014 - 16:21:54
Post Id



Постоянный участник


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


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




Tyoma5891 пишет:
старайтесь не пользоваться по возможности регулярками
Наверно, нужно пользоваться тем инструментом, который больше всего подходит для конкретной задачи. Для данного примера самым оптимальным является вариант с implode и str_split.
 
 Top
Tyoma5891
Отправлено: 30 Июля, 2014 - 16:34:30
Post Id


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


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


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




Ch_chov пишет:
Tyoma5891 пишет:
старайтесь не пользоваться по возможности регулярками
Наверно, нужно пользоваться тем инструментом, который больше всего подходит для конкретной задачи. Для данного примера самым оптимальным является вариант с implode и str_split.

да, скорее всего Вы правы!
 
 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