Сегодня возникла необходимость обработать CSV файлик. Не просто вывести информацию на экран, а плавно встроить её в сайт. Как мне показалось – вопрос плохо освещён в Сети. Поиски по Яндексу что-то существенное не принесли, решил написать сам. Скрипт получился неказистым, возможно подход неправильный, но тем не менее он больше отвечает моим требованиям чем те, что я нашёл в поисковиках.
Давайте сначала определимся с тем, что такое CSV. Как говорит Википедия, это:
CSV (от англ. Comma Separated Values — значения, разделённые запятыми) — это текстовый формат, предназначенный для представления табличных данных. Каждая строка файла — это одна строка таблицы. Значения отдельных колонок разделяются разделительным символом (delimiter), например, запятой (
,), точкой с запятой(;), символом табуляции. Текстовые значения обрамляются символом двойные кавычки ("); если в значении встречаются кавычки — они представляются в файле в виде двух кавычек подряд.
Какой будет разделитель, нам всё равно. Мы не будем использовать fgetcsv, ибо мне неудобно работать с ней.
Строка нашего, экспериментального CSV-файла будет примерно такой:
7;Геленджик ;Орджоникидзе;2;1/3 эт.;53;38;9;66;евроремонт с мебелью;5 млн.руб.
А ниже скрипт, который я написал:
function csv2lines($lines2file) {
$lines = file($lines2file);
foreach ($lines as $line_num => $line) {
$data = $line;
list($number, $city, $street, $rooms, $float, $n1, $n2, $n3, $blabla, $comment, $prise) = explode(“;”, $data);
echo ”
<table class=\”\” width=\”100%\”><tbody>
<tr>
<td width=\”40%\”>”. $street .”</td>
<td width=\”60%\”>”. $prise .”</td>
</tr>
<tr>
<td>Этаж: “. $float .”
Комнаты: “. $rooms .”
Площадь: “. $n1 .” “. $n2 .” / “. $n3 .” м<sup>2</sup></td>
<td>”. $comment .”</td>
</tr>
</tbody></table>
“;
}
}csv2lines(‘name.csv’);
Думаю добавить проверки на пустые переменные или исправить функцию – несложно. Она элементарная.
Михаил
$prise – это цена? тогда пишется price.
у меня была задача экспорта данных из 10 мегового файла в MySQL. при том что хостинг был виртуальным. мне лень писать куда-то.
было бы здесь такое решение, было бы полезно. а так – ерунда.