![]() |
|
||||||||||
|
|||||
|
[+1 23.05.11]
Регистрация: 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++ |
|
|||||
|
Ветеран форума
|
догадатся трудно что означает пункт два???
__________________
... |
|
|||||
|
[+1 23.05.11]
Регистрация: 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++ |
|
|||||
|
Ветеран форума
|
прекращаю вести всякие переговоры, в виду состояния опонента.
__________________
... |
|
|||||
|
[+1 23.05.11]
Регистрация: 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++ |
|
|||||
|
Регистрация: May 2002
Адрес: UA, Киев
Сообщений: 112
|
С помощью вашего спора я и прочтения мануала я уже
крутой спец по CSV.Всем спасибо... 2Crazy. Ты неправ -> функция fgetcsv() решает поставленую тобой Пежону задачу с foo;"bar;buzz";quixx на ура и находит действительно три элемента. Так что даже если она и глючит, то не так примитивно... Так что юзать рег. выражения по-моему здесь неуместно. ЗЫ. Замечательная функция explode вообще не предназначается для работы с ЦСВэшками, так что наёзжать на неё из-за этого не надо...
__________________
be yourself |
|
|||||
|
[+1 23.05.11]
Регистрация: Dec 2001
Сообщений: 4,159
|
Цитата:
![]() "Нет уверенности, что она работает корректно" -- ok, теперь уверенность есть. ![]()
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++ |
|
|||||
|
Регистрация: May 2002
Адрес: UA, Киев
Сообщений: 112
|
Я рад, что мы пришли к сходному выводу. Действильно, ты не нагонял на эту функцию, прошу прощению, что наехал,... ты ботан, сомнений нет.
Спасибо...
__________________
be yourself Последний раз редактировалось MiXer; 06.06.2002 в 23:42. |
|
|||||
|
[+1 23.05.11]
Регистрация: Dec 2001
Сообщений: 4,159
|
Кстати, у меня есть печальное известие: мои подозрения были не напрасны. Функция fgetcsv действительно глючит.
Тестовый пример: <pre>
<?php
$f = fopen("test.csv","r");
$data = fgetcsv($f,1000,";");
foreach($data as $item)
echo "[$item]\n";
?>
</pre>
Здесь пробелы из соображений наглядности заменены знаками подчеркивания -- при проведении сравнительного тестирования не забудьте провести обратную замену. Что должно получится на выходе (проведена та же замена): Что получается: Как мы видим, fgetcsv корректно обрабатывает случай внедренного разделителя, но обкусывает все ведущие и завершающие пробелы незаквоченных строк. Такое поведение можно игнорировать пр импорте числовых данных, но оно может быть неприемлемо при импорте текстовой информации.
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++ |
|
|||||
|
Регистрация: Jun 2002
Адрес: Москва
Сообщений: 20
|
Цитата:
.... ЗЫ: кто-нить знает как сохранить файл excel в csv только разделитель заменить на какой-нить другой? |
![]() |
Часовой пояс GMT +4, время: 20:31. |
|
|
« Предыдущая тема | Следующая тема » |
|
|