php - str_getcsv 未正确解析数据

标签 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 而不是仅仅执行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/

相关文章:

php - 如何通过最大 div 高度限制列表?

php - 选择时是否会出现某些标准?

c++ - 你如何使用 string.erase 和 string.find?

python - CSV 在列中写一个列表

php - Laravel NotFoundHttpException 虽然路由存在

php - 资源解释为图像但使用 MIME 类型文本/html 传输 - Magento

PHP,获取没有文件扩展名的文件名

c++ - TCHAR 指针初始化

java - Java 中 csv 文件的正则表达式

python - 如何使用openurl和multiprocessing同时获取URL不同的数据?