解析格式错误的CSV文件
如何在PHP中解析像这样的CSV(在value 8
附近有双引号)?解析格式错误的CSV文件
"03720108";"value 8"";"";"219";"03720108";"value";"value";"value";"";"";"";"";"";"";"value";"";"";"value";"value";
我试着用fgetscv($pointer, 4096, ';', '"');
是。注意额外的报价。
“值8”“;
你的数据似乎开始于前行,您有没有结束引号开口报价被畸形
是更具体的编辑:只有一行 – razorxan
我正在查看你的原来的版本在@ Macmade的编辑之前,它似乎有两行 – phatfingers
我的不好!不能使用这个s ** t – razorxan
你可能仍然能够。解析这个字符串,虽然:
$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()
来读取输入流,你应该没问题)。
你自己用'价值8'附近有一个双引号' – webbiedave
来回答它,所以我是对的:(那个额外的引号是邪恶的, – razorxan