Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Программирование > PHP

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 04.06.2002, 17:01
Crazy вне форума Посмотреть профиль Отправить личное сообщение для Crazy Посетить домашнюю страницу Crazy Найти все сообщения от Crazy
  № 11  
Crazy
[+1 23.05.11]
 
Аватар для Crazy

Регистрация: Dec 2001
Сообщений: 4,159
Этот код будет некорректно работать с любым разделителем, ибо дело здесь не в конкретной запятой, а в том, что разделитеь может быть частью значения. И CSV предусматривает вполне конкретный механизм обработки таких значений.

Разобрать из regexp'ами -- можно. Через explode -- нельзя.

Впрочем, explode можно применить, если есть абсолютная уверенность, что в данном конкретном случае раделитеь не может быть частью значения. Например -- при разборе числовой таблицы.

(температура окружающие среды поднимается, ага? )
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++

Старый 05.06.2002, 15:31
Самурай вне форума Посмотреть профиль Отправить личное сообщение для Самурай Найти все сообщения от Самурай
  № 12  
Самурай
Ветеран форума

Регистрация: Aug 2001
Адрес: /kiev.ua/butuzov
Сообщений: 3,045
Отправить сообщение для Самурай с помощью ICQ
догадатся трудно что означает пункт два???
__________________
...

Старый 05.06.2002, 15:34
Crazy вне форума Посмотреть профиль Отправить личное сообщение для Crazy Посетить домашнюю страницу Crazy Найти все сообщения от Crazy
  № 13  
Crazy
[+1 23.05.11]
 
Аватар для Crazy

Регистрация: Dec 2001
Сообщений: 4,159
Еще раз: в общем случае этот код будет глючить с любым, произвольно выбранным разделителем. Так что абсолютно неважно, что выбирать.
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++

Старый 05.06.2002, 16:37
Самурай вне форума Посмотреть профиль Отправить личное сообщение для Самурай Найти все сообщения от Самурай
  № 14  
Самурай
Ветеран форума

Регистрация: Aug 2001
Адрес: /kiev.ua/butuzov
Сообщений: 3,045
Отправить сообщение для Самурай с помощью ICQ
прекращаю вести всякие переговоры, в виду состояния опонента.
__________________
...

Старый 05.06.2002, 17:24
Crazy вне форума Посмотреть профиль Отправить личное сообщение для Crazy Посетить домашнюю страницу Crazy Найти все сообщения от Crazy
  № 15  
Crazy
[+1 23.05.11]
 
Аватар для Crazy

Регистрация: Dec 2001
Сообщений: 4,159
Следует ли понимать, что так и не будет пролит обещаный свет относительно фразы "вообщето для этих файлов существуют свои собственные функции почитай о них на php.net' e..." ?
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++

Старый 05.06.2002, 23:28
MiXer вне форума Посмотреть профиль Отправить личное сообщение для MiXer Найти все сообщения от MiXer
  № 16  
MiXer
 
Аватар для MiXer

Регистрация: May 2002
Адрес: UA, Киев
Сообщений: 112
С помощью вашего спора я и прочтения мануала я уже крутой спец по CSV.
Всем спасибо...

2Crazy. Ты неправ -> функция fgetcsv() решает поставленую тобой Пежону задачу с foo;"bar;buzz";quixx на ура и находит действительно три элемента. Так что даже если она и глючит, то не так примитивно... Так что юзать рег. выражения по-моему здесь неуместно.

ЗЫ. Замечательная функция explode вообще не предназначается для работы с ЦСВэшками, так что наёзжать на неё из-за этого не надо...
__________________
be yourself

Старый 06.06.2002, 03:53
Crazy вне форума Посмотреть профиль Отправить личное сообщение для Crazy Посетить домашнюю страницу Crazy Найти все сообщения от Crazy
  № 17  
Crazy
[+1 23.05.11]
 
Аватар для Crazy

Регистрация: Dec 2001
Сообщений: 4,159
Цитата:
Оригинал написал(а) MiXer
Ты неправ -> функция fgetcsv() решает поставленую тобой Пежону задачу с foo;"bar;buzz";quixx на ура
Собственно, я и не высказывал притензий к fgetcsv.
"Нет уверенности, что она работает корректно" -- ok, теперь уверенность есть.
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++

Старый 06.06.2002, 23:39
MiXer вне форума Посмотреть профиль Отправить личное сообщение для MiXer Найти все сообщения от MiXer
  № 18  
MiXer
 
Аватар для MiXer

Регистрация: May 2002
Адрес: UA, Киев
Сообщений: 112
Я рад, что мы пришли к сходному выводу. Действильно, ты не нагонял на эту функцию, прошу прощению, что наехал,... ты ботан, сомнений нет.
Спасибо...
__________________
be yourself


Последний раз редактировалось MiXer; 06.06.2002 в 23:42.
Старый 07.06.2002, 03:51
Crazy вне форума Посмотреть профиль Отправить личное сообщение для Crazy Посетить домашнюю страницу Crazy Найти все сообщения от Crazy
  № 19  
Crazy
[+1 23.05.11]
 
Аватар для Crazy

Регистрация: Dec 2001
Сообщений: 4,159
Кстати, у меня есть печальное известие: мои подозрения были не напрасны. Функция fgetcsv действительно глючит.

Тестовый пример:

Код:
<pre>
<?php

$f = fopen("test.csv","r");
$data = fgetcsv($f,1000,";");
foreach($data as $item)
  echo "[$item]\n";
?>
</pre>
Входной файл (test.csv):

Код:
a;_b;_c_;"d;d";"""e;e""";"_f;f_"
Здесь пробелы из соображений наглядности заменены знаками подчеркивания -- при проведении сравнительного тестирования не забудьте провести обратную замену.

Что должно получится на выходе (проведена та же замена):

Код:
[a]
[_b]
[_c_]
[d;d]
["e;e"]
[_f;f_]
Что получается:

Код:
[a]
[b]
[c]
[d;d]
["e;e"]
[_f;f_]
Как мы видим, fgetcsv корректно обрабатывает случай внедренного разделителя, но обкусывает все ведущие и завершающие пробелы незаквоченных строк.

Такое поведение можно игнорировать пр импорте числовых данных, но оно может быть неприемлемо при импорте текстовой информации.
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++

Старый 07.06.2002, 19:04
CrazyAlieN вне форума Посмотреть профиль Отправить личное сообщение для CrazyAlieN Найти все сообщения от CrazyAlieN
  № 20  
CrazyAlieN
 
Аватар для CrazyAlieN

Регистрация: Jun 2002
Адрес: Москва
Сообщений: 20
Цитата:
Функция fgetcsv действительно глючит
И ещё как: когда я её натравил на 50 меговый файл она ближе к концу уже строчки начала сливать + проблемы с русской кодировкой
....

ЗЫ: кто-нить знает как сохранить файл excel в csv только разделитель заменить на какой-нить другой?

Создать новую тему   Часовой пояс GMT +4, время: 20:31.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 20:31.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.