関数 str_getcsv() は、PHP 5.3.0 以降で使用できます。
PHP の下位バージョンでは、次のようなものを使用できます。
if (!function_exists('str_getcsv')) {
function str_getcsv($input, $delimiter = ',', $enclosure = '"', $escape = null, $eol = null) {
$temp = fopen("php://memory", "rw");
fwrite($temp, $input);
fseek($temp, 0);
$r = array();
while (( $data = fgetcsv($temp, 4096, $delimiter, $enclosure)) !== false) {
$r[] = $data;
}
fclose($temp);
return $r;
}
}
ただし、関数 str_getcsv には注意してください - エンクロージャーが " このケースでテストする場合:
$string = '"wo"rd","fo"o","b"ar","fo"obar","ba"rfoo"';
str_getcsv() 関数で使用する前に、データ内の引用符をエスケープする必要があると思います。
編集
私はいくつかのテストを行いました:
$str1 = '"wo"rd","foo"';
$str2 = '"wo""rd","foo"';
$str3 = '"wo\"rd","foo"';
$test_arr1 = str_getcsv($str1);
$test_arr2 = str_getcsv($str2);
$test_arr3 = str_getcsv($str3);
print_r($test_arr1);
print_r($test_arr2);
print_r($test_arr3);
出力は次のとおりです。
配列 ( [0] => 単語" [1] => foo )
配列 ( [0] => 単語 [1] => foo )
配列 ( [0] => wo\"rd [1] => foo )
結核