2011-10-10 112 views
3

我有一個.csv模板我希望人們填滿,保存並上傳。csv跳轉換行php

問題是這樣的,假設某些用戶會在一行中插入隱藏換行符,使用fgetcsv()時它會輸出被隱藏換行符打斷的行。

如何避免換行或清理數據?

可能的解決方案:

假定第一行是正確的,$計數=計數定界符直至斷線的數量,所述重建文本到一個數組只要$計數;

但我認爲'更好的選擇可用。

以後編輯

這裏的輸入*重要事項[! ]:excel文件裏的數據是「很好」的,它沒有被破壞,它是一個單獨的行!將其保存爲一個CSV文件,用記事本打開它顯示了以下

asd;"asd 
asd 
asd";asd;asd 

下面的代碼

$handle = fopen("file.csv","r"); 
$data = fgetcsv($handle,";"); 
while($data = fgetcsv($handle)) { 
    $array = explode(";",$data[0]); 
    print_r($array); 
} 
fclose($handle); 

這裏的回送的數據

Array ([0] => asd [1] => "asd) Array ([0] => asd) Array ([0] => asd" [1] => asd [2] => asd [3] =>) 

感謝

+1

「隱藏線」是什麼意思? –

+0

打開excel文件並輸入東西,然後按alt + enter然後鍵入更多東西 –

+1

@christi ...然後以csv格式保存此文件並用fgetcsv()讀取它。驚訝嗎?你想象中的所有行都在哪裏? –

回答

3

它是非常容易測試你的案例,並看到沒有破損的行,如果字段正確報價爲

所以,一個CSV行這樣

1,"joe 
""Big Coyote"" 
Hopkins",598600 

將不是一個單一的問題進行讀取。

+0

假設我會製作一些遵循一些可預測的模式的腳本,但我期望我的用戶可能會提交錯誤的數據,所以我想刪除行內的換行符,我會試着找出我的自己,謝謝你的講座 –

+0

,最後修改我的腳本,它終於工作while($ data = fgetcsv($ handle,1000,';','''))print_r($ data);我可能會因爲沒有做出道歉我的問題已經足夠清楚,但是我在php.net上閱讀的所有內容都無法解決。 –