2016-04-21 6 views
3

мне нужно разделить следующую строку:PHP строка после запятой 10

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 

в отдельные линии, где новая линия начинается после последней 10-й запятой, если это имеет смысл?

Так это выглядит следующим образом:

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 
+2

Что вы пробовали? –

+2

взорваться в массив на ','; array_chunk в блоки из 10, проследуйте размытие массива на ',' снова, отобразите каждый элемент массива с помощью новой строки .... '$ result = array_map (function ($ value) {return implode (',', $ value); }, array_chunk (взорвать (',', $ data), 10)); foreach ($ result as $ line) {echo $ line, PHP_EOL; } ' –

ответ

1

Пожалуйста, проверьте комментарии для пояснения: -

<?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) всегда очень хорошая практика, чтобы выяснить ошибки и устранить их. Благодарю.

+0

Это работало! Большое спасибо за ваш подробный ответ! очень информативно! –

+0

Добро пожаловать @MaxThorley. ура :) :) :) –

+0

может кто-нибудь сказать, почему -ve отметил. даже это правильно? –

1

Предполагая, что $ строка является то, что предыдущая строка ваша:

<?php 

$myArray = explode(",", $string); 
$newString = ""; 
$count = 0; 
foreach ($myArray as $value) 
{ 
    $newString = $newString.$value.","; 
    $count++; 
    if ($count==10) 
    { 
    $count=0; 
    $newString = $newString."\n"; 
    } 
} 

?> 
1

Это будет делать это ...

$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>' : ''); 
+0

К сожалению, его не делает трюк: я получаю следующее: 333 ,, 351 ,, 359 ,, 360 ,, 370 ,, 371 ,, 385 ,, 492 ,, 512 ,, 514 ,, Я получаю строку на каждом номере, используя следующий код: $ str = $ row ['Reference']. ''; $ iCount = 0; foreach (explode (',', $ str) as $ iNum) { if ($ iCount% 10 == 0) echo '
'; echo $ iNum. ','; $ iCount ++; } ' –

+0

странный, я это испытал! взорвать удаляет запятые, а затем они добавляются по мере того, как каждый элемент выводится ... неважно, в любом случае ... – Barry

1

Вы можете сделать это с помощью одного вкладыша.

preg_replace('/((.*?,){10})/', "$1\n", $text);