每隔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