Воскресенье, 25.08.2019
Меню сайта
Авторизация
Логин:
Пароль:
Поиск
Статистика
Рейтинг@Mail.ru
Rambler's Top100 Яндекс цитирования
Наша кнопка
HTMLPerlPHP
Прочее
Главная » Статьи » WEB Программирование » PHP

Работа с данными CSV
CSV (Comma Separated Values - значения, разделяемые запятой) - это файловый формат, в который многие приложения могут экспортировать данные. Кажется, что с помощью explode() очень просто превратить значения CSV в массивы; однако на самом деле это очень сложно. Что будет, если запятая встретится внутри значения? В этом случае содержимое берется в двойные кавычки, и использовать explode() становится затруднительно.
Как всегда, группа разработчиков PHP выполнила всю необходимую работу и предложила функцию fgetcsv(). Она действует так же, как fgets(), но преобразует строку в массив, разделяя содержимое по запятым (или любым другим символам, указанным в третьем параметре).
Второй параметр функции fgetcsv() представляет максимальную длину строки в файле csv. В PHP 5.0.0 и более поздних версиях этот параметр необязательный, но в ранних версиях его необходимо указывать. Поэтому следует проверять длину наибольшей строки, иначе данные будут усечены.

Code
<table>  
<?php  
$fp = fopen('file.csv', 'r');  
while (!feof($fp)){  
$line = fgetcsv($handle, 4096);  
echo '<tr><td>';  
echo implode('</td><td>', htmlspecialchars ($line));  
echo '</td></tr>';  
}  
fclose($fp);  
?>  
</table>

Приведенный код, читает файл CSV и выдает его в виде таблици HTML. Для этого используется следующий взятый в цикл код:

Code
$line = fgetcsv($handle, 4096);  
echo '<tr><td>';  
echo implode('</td><td>', htmlspecialchars ($line));  
echo '</td></tr>';

Для записи файлов PHP предлагает функцию fputcsv(). Вы предоставляете указатель на файл и массив значений, а PHP делает все остальное, включая обработку специальных символов. К сожалению, в настоящее время данная функция существует только в CSV от PHP, поэтому приходится вручную импортировать нужное поведение. Кроме того, нужно позаботиться о запятых внутри элементов, поэтому все значения берутся в двойные кавычки. Если элемент содержит двойные кавычки, их нужно представить как специальный символ. В данном случае это выполняется не через добавление обратной косой черты, а путем удвоения кавычек. Ниже приводится пример приемлемой строки данных CSV:

Code
Quote, "And she said: ""No."" ...", Unknown

Код функции fputcsv() записывается следующим образом:

Code
if (!function_exists('fputcsv')) {  
function fputcsv($fp, $line, $separator = ',') {  
for ($i=0; $i < count($line); $i++) {  
if (false !== strpos($line[$i], '"')) {  
$line[$i] = ereg_replace('"', '""', $line[$i]);  
}  
if (false !== strpos($line[$i], $separator) || false !== strpos($line[$i], '"')) {  
$line[$i] = '"' . $line[$i] . '"';  
}  
}  
fwrite($fp, implode($separator, $line) . "\r\n");  
}  
}
Категория: PHP | Просмотров: 7478 | Добавил: mcreyt | Дата: 04.01.2010
Похожие материалы:
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]