【问题标题】:Parse CSV content解析 CSV 内容
【发布时间】:2014-01-21 10:39:03
【问题描述】:

这一定相对容易,但我正在努力寻找解决方案。我使用具有加密功能的专有网络协议接收数据,最后整个接收到的内容都以变量形式结束。内容实际上是 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 对其进行读取/解析,但这对我来说似乎效率极低。

【问题讨论】:

  • Here 就是答案。使用这个库
  • @raheelshan 你读过这个问题吗?该“库”从文件中读取 - 而我没有文件。如果我有文件,我就不会问这个问题,我知道如何从文件中读取 CSV 数据。

标签: php parsing csv


【解决方案1】:

如果fgetcsv 适合您,请考虑:

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

有关php://temp 的更多信息,请参阅the php:// wrapper

【讨论】:

  • 这太完美了!谢谢!一个问题:如果我第二次在php://temp中做file_put_contents,会不会覆盖之前写的内容?
  • 应该可以,是的。我自己实际上并没有使用过php://temp,但我想它会像你使用一个名为php_temp 的文件一样工作——你可以读取、写入、附加、覆盖......
猜你喜欢
  • 2014-06-08
  • 1970-01-01
  • 2014-02-05
  • 1970-01-01
  • 2019-07-21
  • 2021-12-30
  • 2013-08-30
  • 2017-10-29
  • 2016-03-07
相关资源
最近更新 更多