每隔4个字符后添加空格

我想在每个第四个字符后面添加一个空格,直到string结束。 我试过了:

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

在前4个字符之后,这只是我的空间。

我怎样才能让它显示每四之后?

你可以使用chunk_split [docs]

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

DEMO

如果string的长度是四的倍数,但不希望尾随空格,则可以将结果传递给trim

Wordwrap正是你想要的:

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

将输出:1234 5678

如果你想要在每秒钟的数字后面加一个连字符,把“4”replace为“2”,把连字符换成空格:

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

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

参考 – wordwrap

你有没有看到这个叫做wordwrap的函数? http://us2.php.net/manual/en/function.wordwrap.php

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

 <?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); 

一个class轮:

 $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