str_getcsv неверно обрабатывает данные

У меня проблема с функцией str_getcsv для PHP.

У меня есть этот код:

<?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

Параметр корпуса (третий) не имеет такого эффекта. Символ оболочки рассматривается как таковой только тогда, когда он появляется рядом с разделителем.

Чтобы получить желаемый результат, вход должен быть

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

Смотрите в действии .