70

文字列の最後まで4文字ごとに出力にスペースを追加したいと思います。私は試した:

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

最初の4文字の後にスペースができました。

4日ごとに表示するにはどうすればよいですか?

4

9 に答える 9

103

あなたはchunk_split [ドキュメント]を使うことができます:

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

デモ

文字列の長さが4の倍数であるが、末尾にスペースが必要ない場合は、結果をに渡すことができますtrim

于 2012-08-04T10:25:42.830 に答える
10

wordwrap と呼ばれるこの関数を既に見たことがありますか? http://us2.php.net/manual/en/function.wordwrap.php

これが解決策です。このように箱から出してすぐに動作します。

<?php
$text = "Thiswordissoverylong.";
$newtext = wordwrap($text, 4, "\n", true);
echo "$newtext\n";
?>
于 2012-08-04T10:23:59.420 に答える
4

途中で、4文字のチャンクに分割し、各部分の間にスペースを入れてそれらを再び結合します。

最後のチャンクが正確に4文字である場合、これは技術的に最後に1つを挿入するのを見逃すため、手動で追加する必要があります(デモ)。

$chunk_length = 4;
$chunks = str_split($str, $chunk_length);
$last = end($chunks);
if (strlen($last) === $chunk_length) {
    $chunks[] = '';
}
$str_with_spaces = implode(' ', $chunks);
于 2012-08-04T10:26:14.383 に答える
4

一発ギャグ:

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

これにより、出力として次のようになります:
1234 5678 90

それだけです:D

于 2012-08-04T10:39:23.770 に答える
1

関数wordwrap()は基本的に同じことをしますが、これもうまくいくはずです。

$newstr = '';
$len = strlen($str); 
for($i = 0; $i < $len; $i++) {
    $newstr.= $str[$i];
    if (($i+1) % 4 == 0) {
        $newstr.= ' ';
    }
}
于 2012-08-04T10:28:05.953 に答える
0

PHP3互換:

これを試して:

$strLen = strlen( $str );
for($i = 0; $i < $strLen; $i += 4){
  echo substr($str, $i, 4) . ' ';
} 
unset( $strLen );
于 2012-08-04T10:25:45.913 に答える
-3
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
于 2015-06-15T19:15:14.043 に答える