每第4个字符后添加空格

时间:2012-08-04 10:21:08

标签: php

我想在每个第4个字符之后为某个输出添加一个空格,直到字符串结尾。 我试过了:

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

在前4个字符之后,我刚刚获得了空格。

我怎样才能在每隔4号后显示它?

9 个答案:

答案 0 :(得分:77)

您可以使用chunk_split [docs]

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

DEMO

如果字符串的长度是4的倍数但您不想要尾随空格,则可以将结果传递给trim

答案 1 :(得分:40)

Wordwrap完全符合您的要求:

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

将输出: 1234 5678

如果你想要每隔一个数字后面的连字符,则将“4”换成“2”,将空格换成连字符:

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

将输出: 12-34-56-78-90

Reference - wordwrap

答案 2 :(得分:9)

您是否已经看过这个名为wordwrap的函数? http://us2.php.net/manual/en/function.wordwrap.php

这是一个解决方案。像这样开箱即用。

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

答案 3 :(得分:4)

单行:

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

这应该作为输出:
    1234 5678 90

这就是全部:D

答案 4 :(得分:3)

在途中将分成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 :(得分:2)

以下是长度不是4的倍数的字符串示例(在我的情况下为5)。

function ref_format($str, $step, $reverse = false) {

    if ($reverse)
        return strrev(chunk_split(strrev($str), $step, ' '));

    return chunk_split($str, $step, ' ');
}

使用:

echo ref_format("0000000152748541695882", 5);
  

结果:00000 00152 74854 16958 82

反向模式使用(瑞士账单的“BVR代码”):

echo ref_format("1400360152748541695882", 5, true);
  

结果:1​​4 00360 15274 85416 95882

希望它可以帮助你们中的一些人。

答案 6 :(得分:0)

PHP3兼容:

试试这个:

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

答案 7 :(得分:0)

函数wordwrap()基本上是一样的,但这也应该有用。

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

答案 8 :(得分:-3)

...

'Inside the "For j" loop

cellValue = rng.Value

'Test the value - but test it as a string value
If cellValue = "0" Then
  cellValue = "    "     'Replace with 4 spaces
End If

'Carry on with code...

说明,此代码将从右向左添加空格:

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
    }