Сегодня возникла необходимость обработать 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’);
Думаю добавить проверки на пустые переменные или исправить функцию — несложно. Она элементарная.