Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Купить рекламу на форуме 15-35 тыс рублей в месяц

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail


Оплата за обучение в Kata Academy только после твоего трудоустройства в IT, начни карьеру Middle Java-разработчика


Ответ
 
Опции темы Поиск в этой теме
Старый 05.08.2014, 12:34   #1
UKRtortik
Форумчанин
 
Регистрация: 25.02.2014
Сообщений: 366
По умолчанию Вставлять символ через каждые 4 символа

Например имеется строка из 32 символов, как через каждые 4 вставлять знак "-" ?
UKRtortik вне форума Ответить с цитированием
Старый 05.08.2014, 12:36   #2
UKRtortik
Форумчанин
 
Регистрация: 25.02.2014
Сообщений: 366
По умолчанию

Код:
$a = substr_replace($a, "-", 4, 0);
$a = substr_replace($a, "-", 9, 0);
$a = substr_replace($a, "-", 14, 0);
$a = substr_replace($a, "-", 19, 0);
$a = substr_replace($a, "-", 24, 0);
$a = substr_replace($a, "-", 29, 0);
$a = substr_replace($a, "-", 34, 0);
Только так, или есть способ проще?
UKRtortik вне форума Ответить с цитированием
Старый 05.08.2014, 18:14   #3
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

PHP код:
php -'$str = "abcdefghigklmnopqrstuvwxyz012346"; echo implode("-", str_split($str, 4));'
abcd-efgh-igkl-mnop-qrst-uvwx-yz01-2346 
Andkorol вне форума Ответить с цитированием
Старый 07.08.2014, 19:25   #4
wanes101
Форумчанин
 
Регистрация: 04.06.2010
Сообщений: 212
По умолчанию

я бы через регулярку
$you_char="it for exemple";
$text=preg_replace("/((?:.|\n){4})/gi",'${1}'.$you_char,$text);
Цитата:
Сообщение от UKRtortik Посмотреть сообщение
Например имеется строка из 32 символов, как через каждые 4 вставлять знак "-" ?
тогда так
$you_char="-";
$text=preg_replace("/((?:.|\n){4})/gi",'${1}'.$you_char,$text);

Последний раз редактировалось wanes101; 07.08.2014 в 19:27.
wanes101 вне форума Ответить с цитированием
Старый 07.08.2014, 21:29   #5
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от wanes101 Посмотреть сообщение
тогда так
$you_char="-";
$text=preg_replace("/((?:.|\n){4})/gi",'${1}'.$you_char,$text);
wanes101, ты хоть проверял работоспособность того, что ты здесь написал?
Оно ж не работает.
Andkorol вне форума Ответить с цитированием
Старый 07.08.2014, 22:09   #6
wanes101
Форумчанин
 
Регистрация: 04.06.2010
Сообщений: 212
По умолчанию

не проверял думал все верно надо флаг убрать
$text=preg_replace("/((?:.|\n){4})/i",'${1}'.$you_char,$text);
надеюсь юмор понимаешь
wanes101 вне форума Ответить с цитированием
Старый 07.08.2014, 22:22   #7
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от wanes101 Посмотреть сообщение
не проверял думал все верно надо флаг убрать
$text=preg_replace("/((?:.|\n){4})/i",'${1}'.$you_char,$text);
надеюсь юмор понимаешь
Такой юмор – не понимаю.
Всё равно получается ерунда – в конце лишний дефис:
PHP код:
php -'$str = "abcdefghigklmnopqrstuvwxyz012346"; $you_char="-"; $text=preg_replace("/((?:.|\n){4})/i","$1".$you_char,$str); echo $text;'
abcd-efgh-igkl-mnop-qrst-uvwx-yz01-2346
Это прекрасно, что ты пытаешься освоить REGEXP – но не нужно применять эти знания где ни попадя.
Andkorol вне форума Ответить с цитированием
Старый 07.08.2014, 22:27   #8
wanes101
Форумчанин
 
Регистрация: 04.06.2010
Сообщений: 212
По умолчанию

я их знаю что значит пытаюсь это элементарные вещи
вот было

$text="тестим замену в тексте ";

вот вывод

тест-им з-амен-у в -текс-те

автор говорил что ему через 4-ре символа надо вставить символ - вот вставил, регулярки это классика на любом языке они есть, любой хороший язык программирования их поддерживает
К стати в чем притенения? все верно у тебя вывод верный через каждые 4-ре символа тире
Цитата:
$ php -r '$str = "abcdefghigklmnopqrstuvwxyz0123 46"; $you_char="-"; $text=preg_replace("/((?:.|\n){4})/i","$1".$you_char,$str); echo $text;'
abcd-efgh-igkl-mnop-qrst-uvwx-yz01-2346-

Последний раз редактировалось wanes101; 07.08.2014 в 22:44.
wanes101 вне форума Ответить с цитированием
Старый 07.08.2014, 22:42   #9
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Т.е., посчитать до 32-х символов в строке – для тебя невыполнимая задача?
Я же привел вариант, при котором твой regexp явно лажает – какой смысл с этим спорить и пытаться оправдать своё решение?
От этого оно всё равно не станет приемлемым и правильным.
Цитата:
Сообщение от wanes101 Посмотреть сообщение
К стати в чем притенения? все верно у тебя вывод верный через каждые 4-ре символа тире
И лишний дефис в конце тебя ни разу не смущает..?

Последний раз редактировалось Andkorol; 07.08.2014 в 22:52.
Andkorol вне форума Ответить с цитированием
Старый 07.08.2014, 22:55   #10
wanes101
Форумчанин
 
Регистрация: 04.06.2010
Сообщений: 212
По умолчанию

я же посчитал, что не так? регулярка просто более ресурсоемка но для сервака это роли не играет. Просто мне кажется это хорошо тем что это можно применять почти на любом яп, т.е. когда пишешь код и если надо перейти с одного языка на другой то и не нужно изучать тонкостей языка просто регуляку юзаешь и все. Ну в споре не чего плохого нету в споре рождается истина
могу еще сказать чтоб в конце не было тире можно сделать так

$text=preg_replace('/((?:.|\n){4})(?!$)/i','${1}'.$you_char,$text);

Последний раз редактировалось wanes101; 07.08.2014 в 23:30.
wanes101 вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заменить код символа на символ rikomono Microsoft Office Excel 1 24.02.2013 17:47
<br> через каждые 40 символов. Abuhamed PHP 2 25.03.2011 22:52
Пробел через каждые 2 числа KillJoy Паскаль, Turbo Pascal, PascalABC.NET 7 22.12.2010 17:25
Вставлять ячейки через поля слияния Nash1 Фриланс 3 09.07.2009 13:07
Перл. Замена символа \ на символ / Stilet PHP 1 12.04.2008 09:17

Реклама для незарегистрированных, регистрация на форуме