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 のエンクロージャーを無視しており、その情報も分割しています。その理由(その関数はエンクロージャーを尊重する必要があります)のために正確にexplode( "、"、$ string)を実行する代わりにstr_getcsvを使用していますが、explodeと同じように機能しています。
実行中のコード: http://eval.in/17471