2010-02-11 32 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

相关问题