2015-11-06 60 views
0

我工作了幾個小時的如何在我的csv中用php換行,但無法完成任何事情。在csv的PHP線路中斷

我用數據庫中的數據構建了一個csv作爲信息。

我基本上有這樣的:

$company = $row['COL 4']." ".$row['COL 5']." ".$row['COL 6']." ".$row['COL 7']; 
$company = str_replace("\n", " ", $company); 
$company = str_replace("\r", " ", $company); 

正如你可以看到我嘗試每行後換行,但它不工作。

的CSV看起來是這樣的,現在

Google Microsoft Apple Sony

但應當斷線之後,看起來像這樣:

Google Microsoft Apple Sony

+1

'str_replace()函數'使用參數的另一邊。現在你正在用一個空間替換一條新線。 – fedorqui

+0

使用'PHP_EOL'換行 – Saty

+0

您也可以使用'\ n'; –

回答

0
$fp = fopen('php://memory', 'w+'); 

// replace $rows with your iterator 
foreach ($rows as $row) { 
    fputcsv($fp, $row); 
} 

fseek($fp, 0); 

$csv = ''; 

while (!feof($fp)) { 
    $csv .= fread($fp, 1024 * 8); 
} 

echo $csv; 
+2

代碼在幹什麼? – hek2mgl

+0

我認爲你試圖把CSV寫成字符串,通常這是用'fputcsv'完成的,但是對於這個例子我們打開一個虛擬文件並寫入它。你的代碼存在的問題是它沒有考慮到分隔符轉義。所以如果你的列中有一個空間,它將分成2列。 'fputcsv'可以處理大多數邊緣情況。 – Flosculus

+0

爲什麼你不把這個解釋添加到你的答案?目前您的答案包含0解釋,這使得它毫無價值。這就是我想指出的。 – hek2mgl