php-每第4 ch后添加空间
我想在每第4个字符之后直到字符串末尾在输出中添加一个空格。我试过了:
$str = $rows['value'];
echo substr($str, 0, 4) . ' ' . substr($str, 4); ?>
前四个字符之后才给我空格。
我如何让它每4秒显示一次?
user990767 asked 2020-02-21T14:13:22Z
9个解决方案
80 votes
您可以使用trim [docs]:
$str = chunk_split($rows['value'], 4, ' ');
演示
如果字符串的长度是四的倍数,但是您不希望尾随空格,则可以将结果传递给trim。
Felix Kling answered 2020-02-21T14:13:46Z
42 votes
Wordwrap完全可以满足您的需求:
echo wordwrap('12345678' , 4 , ' ' , true )
将输出:1234 5678
例如,如果要在第二个数字后加上连字符,请将“ 4”换成“ 2”,并将空格换成连字符:
echo wordwrap('1234567890' , 2 , '-' , true )
将输出:12-34-56-78-90
参考-自动换行
Olemak answered 2020-02-21T14:14:23Z
9 votes
您是否已经看过这个称为自动换行的功能?[http://us2.php.net/manual/en/function.wordwrap.php]
这是一个解决方案。 像这样开箱即用。
$text = "Thiswordissoverylong.";
$newtext = wordwrap($text, 4, "\n", true);
echo "$newtext\n";
?>
Sgarz answered 2020-02-21T14:14:48Z
4 votes
单线:
$yourstring = "1234567890";
echo implode(" ", str_split($yourstring, 4))." ";
这应该给你作为输出:
1234 5678 90
就这样:D
Giova answered 2020-02-21T14:15:21Z
3 votes
一种方式是将其分成4个字符的块,然后将它们重新连接在一起,并在每个部分之间留一个空格。
由于从技术上讲,如果最后一个块恰好有4个字符,那么最后将不会插入一个字符,因此我们需要手动添加一个字符(演示):
$chunk_length = 4;
$chunks = str_split($str, $chunk_length);
$last = end($chunks);
if (strlen($last) === $chunk_length) {
$chunks[] = '';
}
$str_with_spaces = implode(' ', $chunks);
hakre answered 2020-02-21T14:15:46Z
2 votes
这是一个长度不是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);
结果:14 00360 15274 85416 95882
希望它能对您有所帮助。
Meloman answered 2020-02-21T14:16:28Z
1 votes
函数wordwrap()的功能基本上相同,但是这也应该起作用。
$newstr = '';
$len = strlen($str);
for($i = 0; $i < $len; $i++) {
$newstr.= $str[$i];
if (($i+1) % 4 == 0) {
$newstr.= ' ';
}
}
fdomig answered 2020-02-21T14:16:51Z
0 votes
兼容PHP3:
尝试这个:
$strLen = strlen( $str );
for($i = 0; $i < $strLen; $i += 4){
echo substr($str, $i, 4) . ' ';
}
unset( $strLen );
Eva answered 2020-02-21T14:17:16Z
-3 votes
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
Nitin Divate answered 2020-02-21T14:17:40Z