str_getcsv无法正确解析数据

时间:2013-04-24 14:50:23

标签: php string csv explode fgetcsv

我对PHP的str_getcsv函数有问题。

我有这段代码:

<?php
$string = '#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=714000,RESOLUTION=640x480,CODECS="avc1.77.30, mp4a.40.34"';

$array = str_getcsv($string, ",", '"');

print_r($array);

应返回:

Array
(
    [0] => #EXT-X-STREAM-INF:PROGRAM-ID=1
    [1] => BANDWIDTH=714000
    [2] => RESOLUTION=640x480
    [3] => CODECS=avc1.77.30, mp4a.40.34
)

但相反,它正在回归:

Array
(
    [0] => #EXT-X-STREAM-INF:PROGRAM-ID=1
    [1] => BANDWIDTH=714000
    [2] => RESOLUTION=640x480
    [3] => CODECS="avc1.77.30
    [4] =>  mp4a.40.34"
)

因为它忽略了最后一个参数的外壳:CODECS并且还在分割该信息。我正在使用str_getcsv而不是仅仅因为这个原因而爆炸(“,”,$ string)(该函数应该尊重机箱)但它的工作原理与爆炸相同。

正在执行的代码:http://eval.in/17471

1 个答案:

答案 0 :(得分:3)

enclosure (第三个)参数没有那么多效果。仅当外壳字符出现在分隔符旁边时,才会将其视为外壳字符。

要获得所需的输出,输入必须是

#EXT-X-STREAM-INF:PROGRAM-ID=1,...,"CODECS=avc1.77.30, mp4a.40.34"

<强> See it in action