我对 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
最佳答案
enclosure(第三个)参数没有那么大的效果。仅当包围符出现在分隔符旁边时,才将其视为包围符。
要获得所需的输出,输入需要为
#EXT-X-STREAM-INF:PROGRAM-ID=1,...,"CODECS=avc1.77.30, mp4a.40.34"
<强> See it in action 。
关于php - str_getcsv 未正确解析数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16195128/