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
Форумы портала PHP.SU :: Версия для печати :: пробелы в переменной
Форумы портала PHP.SU » » Хранение данных, их вывод и обработка » пробелы в переменной

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

1. cannaris - 20 Апреля, 2016 - 15:48:38 - перейти к сообщению
Можно ли вставлять пробелы через каждые три символа автоматически в переменной, если да, то как?
2. IllusionMH - 20 Апреля, 2016 - 18:49:51 - перейти к сообщению
cannaris, str_split а потом implode
3. Строитель - 20 Апреля, 2016 - 18:54:25 - перейти к сообщению
А я вот написал немного другой вариант (но предложенный 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;//Стр ока для вст авк ипр обе лов
4. Строитель - 20 Апреля, 2016 - 23:18:10 - перейти к сообщению
Вот вариант по-компактнее
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. //Стр ока для вст авк ипр обе лов
5. Мелкий - 21 Апреля, 2016 - 10:40:13 - перейти к сообщению
Ну раз пошли про компактность, preg_split и даже коверканье юникода через всякие cp1251, то не пройду мимо:
6. Строитель - 21 Апреля, 2016 - 12:58:16 - перейти к сообщению
Мелкий, круто. Я пытался прочитать ваш шаблон(ы) - ниасилил Подозреваемый
7. IllusionMH - 21 Апреля, 2016 - 13:44:18 - перейти к сообщению
Строитель, https://regex101[dot]com/ поможет с разбором.
только там еще стоит поставить флаг g чтобы увидеть как оно будет работать со всей строкой
8. Строитель - 21 Апреля, 2016 - 16:29:29 - перейти к сообщению
IllusionMH, мне не понятен смысл второго аргумента '\\0 '. Вернее не смысл, а принцип его работы. Я пробовал удалить пробел '\\0', но в этом случае пробелы не добавляются в строку. Пробовал удалить слеши с нулём ' ', но в этом случае в результирующую строку сохраняются только последние три символа.
9. IllusionMH - 21 Апреля, 2016 - 18:35:59 - перейти к сообщению
Строитель, так почитайте что такое \\n для preg_replace Улыбка
А во втором случае остаются последние символы т.к. регулярка их игнорирует из-за negative lookahead
10. Строитель - 21 Апреля, 2016 - 19:02:03 - перейти к сообщению
IllusionMH, прочитал - стало понятнее. Это ссылка на подмаску шаблона первого аргумента. Раньше я почему-то не обращал внимание на такую возможность, пользовался обычной заменой... Спасибо за разъяснения.

 

Powered by ExBB FM 1.0 RC1