【问题标题】:Parse CSV string in Laravel在 Laravel 中解析 CSV 字符串
【发布时间】:2014-09-17 16:41:42
【问题描述】:

我的情况是这样的:CSV 文件的前 500kb 被编码为字符串并作为请求发送到我的服务器,运行 Laravel。如何让 Laravel 解析该字符串(它本身不是完整的 CSV 文件)以获取列标题和前几行数据?

我查看了 Goodby/CSV,但它看起来好像只能将文件作为输入,而不是字符串。是否有可以处理这种情况的 CSV 解释器插件,或者我应该期望自己编写一个解析器?

编辑

看起来我可以这样做:

$Data = str_getcsv($CsvString, "\n"); //parse the rows 
foreach($Data as &$Row) $Row = str_getcsv($Row, ","); //parse the items in rows 

当然是我想多了。

【问题讨论】:

  • 有什么理由不能只使用常规的 php 函数 str_getcsv()?
  • 哦,完美。看起来我可以先使用它来获取行,然后再使用它来获取列。我将编辑我的问题。
  • 我不明白这是什么意思'(它本身不是一个完整的 CSV 文件)'
  • @JaredEitnier 我的意思是,因为发送到服务器的字符串不是完整的 CSV 文件,所以字符串的最后一行可能格式不正确,导致尝试解析时出现一些问题。跨度>

标签: php string parsing csv laravel


【解决方案1】:

我已经研究过 Goodby/CSV,但看起来好像只能 一个文件作为输入,而不是一个字符串

如果您启用了fopen wrappers,您可以利用GoodbyCSV 在内部使用SplFileObject 类这一事实,并将字符串作为数据协议传递:

$lexer->parse('data://text/plain;base64,' . base64_encode($csv_string), $interpreter);

当我需要处理大文件和简单字符串时,我发现这很有用。

【讨论】:

    猜你喜欢
    • 2021-01-08
    • 1970-01-01
    • 2017-01-27
    • 2016-06-19
    • 1970-01-01
    • 2021-03-21
    • 1970-01-01
    • 2016-08-24
    • 1970-01-01
    相关资源
    最近更新 更多