Мне нужно разделить следующую строку:
333 ,351 ,359 ,360 ,370 ,371 ,385 ,492 ,512 ,514 ,528 ,539 ,546 ,628 ,630 ,634 ,636 ,702 ,706 ,709 ,710 ,715 ,718 ,719 ,763 ,770 ,803 ,822 ,823
в отдельные строки, где новая строка начинается после последней десятой запятой, если это имеет смысл?
Так это выглядит так:
333 ,351 ,359 ,360 ,370 ,371 ,385 ,492 ,512 ,514 ,
528 ,539 ,546 ,628 ,630 ,634 ,636 ,702 ,706 ,709 ,
710 ,715 ,718 ,719 ,763 ,770 ,803 ,822 ,823
Пожалуйста, проверьте комментарии для объяснения: —
<?php
error_reporting(E_ALL); // check if any error occur
ini_set('display_errors',1); // display error
$string = '333 ,351 ,359 ,360 ,370 ,371 ,385 ,492 ,512 ,514 ,528 ,539 ,546 ,628 ,630 ,634 ,636 ,702 ,706 ,709 ,710 ,715 ,718 ,719 ,763 ,770 ,803 ,822 ,823'; // original string
echo $string; // echo original string
$array = explode(',',$string); // explode string with comma to make it array
echo "<pre/>";print_r($array); // print array
$chunked_array = array_chunk($array,10); // chunk array to each 10 counts and make a multidimensional array
$new_string = ''; // create a new empty string
foreach ($chunked_array as $chunked_ar){ // iterate through multi-dimensional array
$new_string .= implode(',',$chunked_ar)."\n"; // convert each array to string and add new line and assign it to new string variable
}
echo $new_string; // echo new variable.
?>
Выход:- https://eval.in/557389
Примечание: добавление кода error_reporting (первые две строки после <?php
) всегда очень хорошая практика для выявления ошибок и их устранения. Благодарю.
Предполагая, что $ string это ваша предыдущая строка:
<?php
$myArray = explode(",", $string);
$newString = "";
$count = 0;
foreach ($myArray as $value)
{
$newString = $newString.$value.",";
$count++;
if ($count==10)
{
$count=0;
$newString = $newString."\n";
}
}
?>
Это сделает это …
$str = '333 ,351 ,359 ,360 ,370 ,371 ,385 ,492 ,512 ,514 ,528 ,539 ,546 ,628 ,630 ,634 ,636 ,702 ,706 ,709 ,710 ,715 ,718 ,719 ,763 ,770 ,803 ,822 ,823';
$iCount = 0;
foreach (explode(',',$str) as $iNum)
echo $iNum.' ,'.(++$iCount % 10 == 0 ? '<br>' : '');
Вы можете сделать это с одним вкладышем.
preg_replace('/((.*?,){10})/', "$1\n", $text);