自 PHP 5.3.0 起,函数 str_getcsv() 可用。
对于较低版本的 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] => word" [1] => foo )
数组( [0] => wo"rd [1] => foo )
数组( [0] => wo\"rd [1] => foo )
结核病