我有類似於的字符串21,22,23,24,25,26,27,28,31,32,33,34,35,36,37,38我該怎麼辦每6個逗號後添加一個換行符?每隔6個逗號加入換行符
21,22,23,24,25,26,
27,28,31,32,33,34,
35,36,37,38
我有類似於的字符串21,22,23,24,25,26,27,28,31,32,33,34,35,36,37,38我該怎麼辦每6個逗號後添加一個換行符?每隔6個逗號加入換行符
21,22,23,24,25,26,
27,28,31,32,33,34,
35,36,37,38
使用array_chunk
,array_map
,explode
和implode
函數的溶液:
$s = "21,22,23,24,25,26,27,28,31,32,33,34,35,36,37,38";
$chunks = array_chunk(explode(",", $s), 6);
$result = rtrim(implode(PHP_EOL, array_map(function($v) {
return implode(',', $v) . ',';
}, $chunks)), ',');
print_r($result);
輸出:
21,22,23,24,25,26,
27,28,31,32,33,34,
35,36,37,38
您的方法在38之後也輸入逗號,您的輸出是錯誤的。 @RomanPerekhrest – tufanayd
@tufanayd,再次檢查,現在沒關係 – RomanPerekhrest
一個方法可以是分割輸入串,組單個零件到固定大小的塊,然後再加入這些塊回:
$s="21,22,23,24,25,26,27,28,31,32,33,34,35,36,37,38";
$arr = explode(",", $s);
$chunks = array_chunk($arr, 6);
$L = array();
foreach($chunks as $chunk){
$L[] = implode(",", $chunk);
}
$ret = implode(",\n", $L);
var_dump($ret);
這產生
string(49) "21,22,23,24,25,26,
27,28,31,32,33,34,
35,36,37,38"
的代碼以上可以進一步縮短爲:
$arr = explode(",", $s);
$chunks = array_chunk($arr, 6);
$ret = implode(",\n", array_map(function($x){ return implode(",", $x);}, $chunks));
這是我能想到關於它的邏輯, 忽略它,如果它去影響服務表現,
$s = "21,22,23,24,25,26,27,28,31,32,33,34,35,36,37,38";
$loop = explode(",",$s);
$new_val = '';
$counter = 1;
foreach($loop as $key=>$val)
{
$new_val .= $val.',';
if($counter % 6 ==0)
{
$new_val .= '\n';
}
$counter++;
}
echo $new_val;
只需使用此功能,
function insertNewline($str, $delim, $pos){
return preg_replace('/((.*?'.$delim.'){'.$pos.'})/',"$1" . PHP_EOL,$str);
}
$x = "21,22,23,24,25,26,27,28,31,32,33,34,35,36,37,38";
echo insertNewline($x, ',', 6);
作業?如果你打算學習,那麼你也應該提供你已經嘗試過的地方,你被困在哪裏。 –
您的輸出與輸入字符串不同 – RomanPerekhrest