解析包含php数组新行的CSV文件
我有一个CSV文件,其中包含:解析包含php数组新行的CSV文件,php,arrays,csv,Php,Arrays,Csv,我有一个CSV文件,其中包含: Test1,One line Test2,"Two lines Hello" Test3,One line 如您所见,其中一列有一个用新行分隔的值 要将此CSV文件解析为数组,我运行: $csvArray = array(); $csvData = file_get_contents('file.csv'); $lines = explode(PHP_EOL, $csvData); foreach ($lines as $line) { $csvArr
Test1,One line
Test2,"Two lines
Hello"
Test3,One line
如您所见,其中一列有一个用新行分隔的值
要将此CSV文件解析为数组,我运行:
$csvArray = array();
$csvData = file_get_contents('file.csv');
$lines = explode(PHP_EOL, $csvData);
foreach ($lines as $line) {
$csvArray[] = str_getcsv($line);
}
// print_r($csvArray);
它解决了一个问题。它将值中的新行读取为新行,这是完全不正确的
如何使其正确读取多行值
编辑:这个问题集中在新词上
$fp = fopen('filecsv', 'r');
$csvArray = array();
while ($row = fgetcsv($fp)) {
$csvArray[] = $row;
}
fclose($fp);
使用explode(PHP_EOL,$csvData)
将无法通过其行定界符正确分割CSV。多行单元格用引号封装,这意味着行将继续到新行上,直到新行关闭为止
PHP的内置函数将正确读取文件中的一行,并将指针移动到进程中的下一行。而str_getcsv
将只从字符串中读取一行,而不考虑其他行(因为它是字符串,而不是流)
由于您已使用
explode
拆分字符串,您的CSV行已断开,因此该行将不完整。请详细说明您的答案。太好了,非常感谢。你完全正确!可能重复的