|
|
|
| Для разбора CSV файла используем вот такой код:
$row = 1;
$handle = fopen("51.csv", "r");
while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
$num = count($data);
echo "<p> $num полей в строке $row: <br /></p>\n";
$row++;
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "<br />\n";
}
}
fclose($handle);
|
Как поступить, если содержимое файла ранее уже было считано и занесено в переменную с помощью
$tmp = file_get_contents('51.csv');
|
Записывать информацию в виде служебного файла на диск и снова открывать его через fopen представляется нерациональным.
Есть ли другой способ? | |
|
|
|
|
|
|
|
для: Владимир55
(17.01.2013 в 22:45)
| | Если у вас PHP 5.3 можно воспользоваться функцией str_getcsv(), передав ей содержимое переменной $tmp. | |
|
|
|
|
|
|
|
для: Владимир55
(17.01.2013 в 22:45)
| | Как выше уже сказали способ для 5.3 и больше. Если это не подходит, то можно записать в память, тем самым самому сделать такую функцию
<?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;
}
} ?>
|
подробнее в мануале, как всегда | |
|
|
|