【问题标题】:Parse CSV using new line as seperator使用换行符作为分隔符解析 CSV
【发布时间】:2012-09-16 08:40:21
【问题描述】:

我在从 Excel 导出的 CSV 文件中有以下内容

Lol,Man,11
Hello,World,11
My,Name,12
Is,Epic,11

如何使用 PHP 将其解析为数组?

目前我正在使用

$line = file_get_contents("Day1.CSV");

$parsed = str_getcsv(
    $line, # Input line
    ',',   # Delimiter
    '"',   # Enclosure
    '//'   # Escape char
);

但这不起作用。

【问题讨论】:

  • 它有新的行分隔。下面的代码完成了这项工作。
  • 我以为你已经忽略了那部分,这很明显。我的错误

标签: php arrays excel parsing csv


【解决方案1】:

您可以使用fgetcsv(手册页中的示例)

if (($handle = fopen("Day1.CSV", "r")) !== FALSE) 
{
    while (($data = fgetcsv($handle, 1000, ",", "//")) !== FALSE) 
    {
        // do something with the data here
        echo $data[0] . " - ". $data[1] . " - ". $data[2] . "</br>" ;
    }
    fclose($handle);
}

或者在您的实现中,您可以这样做:

$contents = file_get_contents("Day1.CSV");

$data = str_getcsv("\n");

foreach ($data as $row)
{
    $output = str_getcsv($row, ',', '"', '//');

    // do something with the data here
    echo $output[0] . " - " $output[1] . " - " $output[2] . "\n";
}

HTH

【讨论】:

  • 太棒了。导致 PHP 错误的几个错误:已修复:pastebin.com/4LRG14n2 谢谢!
  • 感谢您的指点。对以上内容进行了编辑以反映这些更正。
【解决方案2】:
<?php
$str="Lol,Man,11";

$out=str_getcsv($str,",",'','');

print_r($out); //Array ( [0] => Lol [1] => Man [2] => 11 ) 

$out=explode(",",$str);

【讨论】:

    猜你喜欢
    • 2016-05-12
    • 2013-03-04
    • 2013-12-15
    • 2019-02-03
    • 2016-06-30
    • 1970-01-01
    • 1970-01-01
    • 2017-10-14
    • 1970-01-01
    相关资源
    最近更新 更多