Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 解析Laravel中的CSV字符串_Php_String_Parsing_Csv_Laravel - Fatal编程技术网

Php 解析Laravel中的CSV字符串

Php 解析Laravel中的CSV字符串,php,string,parsing,csv,laravel,Php,String,Parsing,Csv,Laravel,我的情况是:CSV文件的第一个~500kb被编码为字符串,并作为请求发送到运行Laravel的服务器。如何让Laravel解析该字符串(它本身不是一个完整的CSV文件)以获取列标题和前几行数据 我已经研究过Goodby/CSV,但它看起来似乎只能接受一个文件作为输入,而不能接受一个字符串。是否有一个CSV解释器插件可以处理这种情况,或者我应该编写自己的解析器 编辑: 看起来我可以这样做: $Data = str_getcsv($CsvString, "\n"); //parse the rows

我的情况是: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 
当然,我想得太多了

我已经研究过Goodby/CSV,但看起来这只需要 作为输入的文件,而不是字符串

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

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

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

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