Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Парсинг строки из Excel, как определить конец строки?
Покинул форум
Сообщений всего: 24
Дата рег-ции: Окт. 2012 Откуда: Москва
Помог: 0 раз(а)
Необходимо сделать на странице сайта <textarea>, в которую можно было бы вставить скопированные из excel(через выделение + ctrl+c) данные и получить из этого в PHP данные в виде массива [строка1[ячейка1,ячейка2,..], строка2[ячейка1,..]]
Столкнулся с проблемой: в некоторых excel ячейках встречаются символы переноса строки. В таких случаях excel ячейку обрамляет кавычками. Как мне определить где кончается строка 1 и начинается строка 2 в таком случае?
Сами ячейки разделены между собой табуляцией, строки - символами \r\n, соответственно в обычном случае массив я создавал путем деления на строки через explode("\r\n"), а затем делением строки на ячейки через explode("\t"). А вот как быть когда внутри ячейки встречается те же \r\n... нужно как-то учитывать кавычки.
Т.е. собственно вот пример строки которую я получаю в textarea(для наглядности вставил спецсиволы \t и \r\n, на самом деле они невидимы)
ячейка1 \t ячейка2 \t "ячейка3 \r\n ячейка3 часть2" \r\n
ячейка1 \t ячейка2 \t "ячейка3" \r\n
Как мне спарсить первую строку? Возможно str_getcsv() поможет?
Покинул форум
Сообщений всего: 24
Дата рег-ции: Окт. 2012 Откуда: Москва
Помог: 0 раз(а)
В общем, сам PHP с помощью fgetcsv() отлично парсит скопированное из excel, только ему нужно скармливать файл, поэтому решение такое - создаем временный файл, записываем в него данные и парсим как CSV
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.