Добавить пробел после каждого 4-го символа

Я хочу добавить пробел в некоторый вывод после каждого 4-го символа до конца строки. Я пытался:

$str = $rows['value']; <? echo substr($str, 0, 4) . ' ' . substr($str, 4); ?> 

Который только дал мне пространство после первых 4 символов.

Как я могу показать это после каждых 4-го?

Solutions Collecting From Web of "Добавить пробел после каждого 4-го символа"

Вы можете использовать chunk_split [docs] :

 $str = chunk_split($rows['value'], 4, ' '); 

DEMO

Если длина строки кратна четырем, но вы не хотите занимать конечное пространство, вы можете передать результат для trim .

Wordwrap делает именно то, что вы хотите:

 echo wordwrap('12345678' , 4 , ' ' , true ) 

выйдет: 1234 5678

Если вы хотите, скажем, дефис после каждой второй цифры вместо этого, поменяйте «4» на «2» и пробел для дефиса:

 echo wordwrap('1234567890' , 2 , '-' , true ) 

будет выводиться: 12-34-56-78-90

Ссылка – wordwrap

Вы уже видели эту функцию под названием wordwrap? http://us2.php.net/manual/en/function.wordwrap.php

Вот решение. Работает прямо из коробки, как это.

 <?php $text = "Thiswordissoverylong."; $newtext = wordwrap($text, 4, "\n", true); echo "$newtext\n"; ?> 

По пути было бы разбиться на 4-символьные куски, а затем снова объединить их вместе с пробелом между каждой частью.

Поскольку это технически пропустит, чтобы вставить один в самом конце, если последний кусок будет иметь ровно 4 символа, нам нужно добавить его вручную ( Demo ):

 $chunk_length = 4; $chunks = str_split($str, $chunk_length); $last = end($chunks); if (strlen($last) === $chunk_length) { $chunks[] = ''; } $str_with_spaces = implode(' ', $chunks); 

один лайнер:

 $yourstring = "1234567890"; echo implode(" ", str_split($yourstring, 4))." "; 

Это должно дать вам результат:
1234 5678 90

Вот и все: D

Функция wordwrap() основном делает то же самое, однако это должно работать.

 $newstr = ''; $len = strlen($str); for($i = 0; $i < $len; $i++) { $newstr.= $str[$i]; if (($i+1) % 4 == 0) { $newstr.= ' '; } } 

PHP3 Совместимость:

Попробуй это:

 $strLen = strlen( $str ); for($i = 0; $i < $strLen; $i += 4){ echo substr($str, $i, 4) . ' '; } unset( $strLen ); 
 StringBuilder str = new StringBuilder("ABCDEFGHIJKLMNOP"); int idx = str.length() - 4; while (idx > 0){ str.insert(idx, " "); idx = idx - 4; } return str.toString(); 

Объяснение, этот код добавит пространство справа налево:

  str = "ABCDEFGH" int idx = total length - 4; //8-4=4 while (4>0){ str.insert(idx, " "); //this will insert space at 4th position idx = idx - 4; // then decrement 4-4=0 and run loop again } 

Конечным результатом будет:

 ABCD EFGH