如何在PHP中解析像这样的CSV(value 8
附近有双引号)?
"03720108";"value 8"";"";"219";"03720108";"value";"value";"value";"";"";"";"";"";"";"value";"";"";"value";"value";
我尝试了fgetscv($pointer, 4096, ';', '"');
答案 0 :(得分:0)
是。注意额外的报价。
“value 8”“;
答案 1 :(得分:0)
从前一行开始,您的数据似乎格式不正确。你有一个没有收盘报价的开盘报价。
答案 2 :(得分:0)
但您仍然可以解析此字符串:
$str = '"03720108";"value 8"";"";"219";"03720108";"value";"value";"value";"";"";"";"";"";"";"value";"";"";"value";"value";';
$parsed = array_map(
function( $str ) { return substr($str, 1, -1); },
explode(';', $str)
);
var_export($parsed);
/*
array (
0 => '03720108',
1 => 'value 8"',
2 => '',
3 => '219',
4 => '03720108',
5 => 'value',
6 => 'value',
7 => 'value',
8 => '',
9 => '',
10 => '',
11 => '',
12 => '',
13 => '',
14 => 'value',
15 => '',
16 => '',
17 => 'value',
18 => 'value',
19 => false,
)
*/
但是,如果有一些元素包含;
字符(通常会通过将值括在引号中来转义,那么事情就会变得复杂了......'哦!),上面的代码假定你只需要解析一行(虽然如果你使用fgets()
来读取输入流,你应该没问题。)