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]   

> Без описания
cannaris
Отправлено: 20 Апреля, 2016 - 15:48:38
Post Id


Новичок


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


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




Можно ли вставлять пробелы через каждые три символа автоматически в переменной, если да, то как?
 
 Top
IllusionMH
Отправлено: 20 Апреля, 2016 - 18:49:51
Post Id



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


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


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




cannaris, str_split а потом implode
 
 Top
Строитель
Отправлено: 20 Апреля, 2016 - 18:54:25
Post Id



Участник


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


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




А я вот написал немного другой вариант (но предложенный IllusionMH вроде бы компактнее)
PHP:
скопировать код в буфер обмена
  1. $str = 'Строкадлявставкипробелов';
  2. $chars = preg_split('||u', $str, -1, PREG_SPLIT_NO_EMPTY);
  3. $out = '';
  4. foreach ($chars as $key => $char) {
  5.     if (!($key % 3)) {
  6.         $out .= ' '. $char;
  7.     } else {
  8.         $out .= $char;
  9.     }
  10. }
  11.  
  12. echo $out;//Стр ока для вст авк ипр обе лов
 
 Top
Строитель
Отправлено: 20 Апреля, 2016 - 23:18:10
Post Id



Участник


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


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




Вот вариант по-компактнее
PHP:
скопировать код в буфер обмена
  1. $str = 'Строкадлявставкипробелов';
  2. $str = iconv('UTF-8', 'WINDOWS-1251', $str);
  3.  
  4. echo iconv('WINDOWS-1251', 'UTF-8', implode(' ', str_split($str, 3)));
  5. //Стр ока для вст авк ипр обе лов
 
 Top
Мелкий Супермодератор
Отправлено: 21 Апреля, 2016 - 10:40:13
Post Id



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


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


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




Ну раз пошли про компактность, preg_split и даже коверканье юникода через всякие cp1251, то не пройду мимо:


-----
PostgreSQL DBA
 
 Top
Строитель
Отправлено: 21 Апреля, 2016 - 12:58:16
Post Id



Участник


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


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




Мелкий, круто. Я пытался прочитать ваш шаблон(ы) - ниасилил Подозреваемый
 
 Top
IllusionMH
Отправлено: 21 Апреля, 2016 - 13:44:18
Post Id



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


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


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




Строитель, https://regex101[dot]com/ поможет с разбором.
только там еще стоит поставить флаг g чтобы увидеть как оно будет работать со всей строкой
 
 Top
Строитель
Отправлено: 21 Апреля, 2016 - 16:29:29
Post Id



Участник


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


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




IllusionMH, мне не понятен смысл второго аргумента '\\0 '. Вернее не смысл, а принцип его работы. Я пробовал удалить пробел '\\0', но в этом случае пробелы не добавляются в строку. Пробовал удалить слеши с нулём ' ', но в этом случае в результирующую строку сохраняются только последние три символа.
 
 Top
IllusionMH
Отправлено: 21 Апреля, 2016 - 18:35:59
Post Id



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


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


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




Строитель, так почитайте что такое \\n для preg_replace Улыбка
А во втором случае остаются последние символы т.к. регулярка их игнорирует из-за negative lookahead
 
 Top
Строитель
Отправлено: 21 Апреля, 2016 - 19:02:03
Post Id



Участник


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


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




IllusionMH, прочитал - стало понятнее. Это ссылка на подмаску шаблона первого аргумента. Раньше я почему-то не обращал внимание на такую возможность, пользовался обычной заменой... Спасибо за разъяснения.
 
 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