Подтвердить что ты не робот

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

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

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

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

Как я могу показать его после каждого четвертого?

4b9b3361

Ответ 1

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

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

DEMO

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

Ответ 2

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

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

будет выводиться: 1234 5678

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

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

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

Ссылка - wordwrap

Ответ 3

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

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

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

Ответ 4

В пути было бы разбиться на 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);

Ответ 5

один вкладыш:

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

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

Что все: D

Ответ 6

PHP3 Compatible:

Попробуйте следующее:

$strLen = strlen( $str );
for($i = 0; $i < $strLen; $i += 4){
  echo substr($str, $i, 4) . ' ';
} 
unset( $strLen );

Ответ 7

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

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

Ответ 8

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