Php 如何使用包含逗号的值解析CSV?
假设您有一个字符串,如下所示:Php 如何使用包含逗号的值解析CSV?,php,csv,Php,Csv,假设您有一个字符串,如下所示: $str = 'one value, two value, "three, cool value", four value'; $arr = array('one value', 'two value', 'three, cool value', 'four value'); 您将如何使其成为一个数组,如下所示: $str = 'one value, two value, "three, cool value", four value'; $arr = ar
$str = 'one value, two value, "three, cool value", four value';
$arr = array('one value', 'two value', 'three, cool value', 'four value');
您将如何使其成为一个数组,如下所示:
$str = 'one value, two value, "three, cool value", four value';
$arr = array('one value', 'two value', 'three, cool value', 'four value');
(这都是关于CSV和包含逗号的值,因此是双引号。)您可以查看。如果您确实是从字符串解析它,请使用
如果要从文件中读取数据,请使用 假设您使用的是5.3.0或更新版本,请使用。如果您使用的是旧版本的PHP,请尝试使用来自的“var”流包装器。最后一个示例可在中找到。您可以使用 结果:
array(4) {
[0]=>
string(9) "one value"
[1]=>
string(9) "two value"
[2]=>
string(17) "three, cool value"
[3]=>
string(10) "four value"
}
有两种方法
“\”
它看起来是这样的:
$csv=str\u getcsv($csvstring,,,,,,“\”)代码>使用str\u getcsv
和array\u map
和trim
就可以做到这一点。使用str\u getcsv
将项目分解为一个数组,然后使用array\u map
和trim
从每个项目中删除空白
PHP→ JSON格式
不修剪
echo json_encode(str_getcsv('one value,two value,“three,cool value”,four value');
这将产生:
//某些数组项包含额外的空格,但不包含'trim()`
[“一值”、“二值”、“三值、冷值”、“四值”]
整齐的
echo json_encode(数组_map('trim',str_getcsv('one-value,two-value,“three,cool-value”,four-value'));
这将产生:
[“一值”、“二值”、“三值、冷值”、“四值”]
PHP格式
要使用JSON格式的最终结果,请使用echo JSON\u encode(…)
,就像我上面所做的那样。否则,如果您想继续将其用作PHP数组,则使用var\u dump(…)
而不使用json\u编码。您可以像这里这样做(包括trim()
):
var_dump(数组映射('trim',str_getcsv('one value,two value,'three,cool value,four value'));
这将产生:
数组(4){
[0]=>
字符串(9)“一个值”
[1]=>
字符串(9)“两个值”
[2]=>
字符串(17)“三,冷值”
[3]=>
字符串(10)“四值”
}
这是正确的PHP格式,相当于:
[“一值”、“二值”、“三值、冷值”、“四值”]
实际上不需要这样做-fgetcsv()和str_getcsv()都可以很好地处理所演示的引用样式。请注意,如果您使用的是PHP<5.3,并且需要从字符串中读取,则可以使用“var”流包装器。看见