2

我对 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 而不是仅仅因为这个原因做 explode(",", $string) (该函数应该尊重外壳),但它的工作方式与 explode 将做的一样。

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

4

1 回答 1

4

外壳(第三个)参数没有那么大的效果。仅当它出现在分隔符旁边时,才会这样处理包围字符。

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

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

看到它在行动

于 2013-04-24T14:52:51.553 回答