2016-04-21 68 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個塊,然後再遍歷數組,然後再遍歷數組imploding,使用換行符顯示每個數組元素。 },array_chunk(explode(',',$ 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

任何人都可以告訴爲什麼 - 已標記。即使這是正確的? –

1

假設$ string是你的以前的字符串:

<?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,我得到每個數字使用下面的代碼linebreak:$ str = $ row ['Reference']。 ''; $ iCount = 0; foreach(爆炸(',',$ str)爲$ iNum){ if($ iCount%10 == 0) echo'
'; echo $ iNum。','; $ iCount ++; }' –

+0

奇怪,我測試過了!爆炸刪除逗號,然後在每個項目輸出時重新添加......無論如何...... – Barry

1

你可以用一行代碼來做到這一點。

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