Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.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 如何使用包含逗号的值解析CSV?_Php_Csv - Fatal编程技术网

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"
}
有两种方法

  • 如果要引用条目,请引用每个条目。然后用“,”(带引号)分解字符串

  • 在解析之前用不常见的东西替换逗号。像{124;}

  • 将此功能与存储模块配合使用,如
    “\”


    它看起来是这样的:
    $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”流包装器。看见