2014-01-21 108 views
0

這一定相對容易,但我正在努力尋找解決方案。我使用加密的專有網絡協議接收數據,最終收到的所有內容都以變量形式結束。內容實際上是一個CSV文件的內容 - 我需要解析這些數據。解析CSV內容

如果這是磁盤上的常規文件,我可以使用fgetcsv;如果我能以某種方式將內容分解成單個記錄,那麼我可以使用str_getcsv - 但是如何將此文件分解爲記錄?簡單的閱讀直到換行不起作用,因爲CSV可以包含換行符的值。以下是一組示例數據:

ID,SLN,Name,Address,Contract no 
123,102,Market 1a,"Main street, Watertown, MA, 02471",16 
125,97,Sinthetics,"Another address, 
Line 2 
City, NY 10001",16 
167,105,"Progress, ahead",,18 

所有這些數據都保存在一個變量中 - 我需要解析它。

當然,我總是可以將這些數據寫入磁盤上的臨時文件中,使用fgetcsv進行讀取/解析,但是對我來說這似乎效率極低。

+0

[這裏](http://stackoverflow.com/questions/11337221/codeigniter-rest- csv-import-to-mysql/11339125#11339125)就是答案。使用這個庫 –

+0

@raheelshan你看過這個問題嗎?該「庫」從文件讀取 - 我沒有一個文件。如果我有一個文件,我不會問這個問題,我知道如何從文件中讀取CSV數據。 –

回答

0

如果fgetcsv爲你工作,考慮一下:

file_put_contents("php://temp",$your_data_here); 
$stream = fopen("php://temp","r"); 
// $result = fgetcsv($stream); ... 

更多關於php://temp,看the php:// wrapper

+0

這是完美的!謝謝!一個問題:如果我第二次在'php:// temp'中執行'file_put_contents',它會覆蓋之前寫入的內容嗎? –

+0

它應該這樣做,是的。我自己實際上並沒有使用'php:// temp',但我想它會起作用,就好像你使用的是一個名爲'php_temp'的文件 - 你可以讀,寫,追加,覆蓋... –

+0

這很棒, 謝謝! –