2010-02-11 65 views
1

我試圖做一個網站,人們直接將CSV文件粘貼到textarea(稱爲「原始文本」)並解析它,然後用我的腳本生成一些東西。我知道如何解析服務器上的csv文件(使用fgetcsv),但不知道如何從POST變量INTO獲取輸入fgetcsv。到目前爲止,我已經嘗試過這樣的事情,但沒有成功:用PHP解析textarea輸入就好像它是一個csv?

$file_handle = fopen("php://input", "r"); 

while (!feof($file_handle)) { 
    $line_of_text = fgetcsv($file_handle); 
    echo $line_of_text[0] . '<br />'; 
} 

回答

6

fgetcsv()有一個表妹叫str_getcsv()應該做的正是你所需要的。經常以奇妙的名字命名(一次沒有,一次有下劃線)。呃,好吧!但我們仍然喜歡PHP,不是。

例(無衛生!!!我看不出有什麼必要在這一點上,雖然)。

$array_csv = str_getcsv($_POST["csv"]); 
+0

謝謝佩卡!小東西,雖然 - 我的主機只運行PHP 5.2.x,它不支持這個功能...有沒有另一個簡單的方法來做這樣的事情,而不是要求他們升級? – 2010-02-12 12:36:05

+0

@yonation啊,我沒有看到它是> = 5.3.0。查看手冊頁中的用戶註釋,有許多替換功能。我相信你會找到一個合適的。 – 2010-02-12 12:59:00

+0

有趣的插件 - 它是一個多行CSV?它仍然有效嗎? – Ross 2013-02-08 01:14:42

2

Pekka's example作品CSV數據的單行。如果用戶輸入CSV多行數據,你必須破滅這首先到一個數組(在下面的例子中「$行」),然後通過迭代和解析與str_getcsv每一行:

$array_csv = array(); 
    $lines = explode("\n", $_POST["csv"]); 
    foreach ($lines as $line) { 
    $array_csv[] = str_getcsv($line); 
    } 
} 

參見: parse csv to multidimensional array

相關問題