Необходимо сделать на странице сайта <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() поможет?
1. kisil-mike - 31 Мая, 2018 - 22:52:51 - перейти к сообщению
2. Строитель - 31 Мая, 2018 - 23:35:07 - перейти к сообщению
kisil-mike пишет:
Попробуйте. А если не поможет, то можно попробовать вместо explode() решение с preg_split():Возможно str_getcsv() поможет?
PHP:
скопировать код в буфер обмена
скопировать код в буфер обмена
- $str = 'ячейка1 \t ячейка2 \t "ячейка3 \r\n ячейка3 часть2" \r\n
- ячейка1 \t ячейка2 \t "ячейка3" \r\n';
CODE (html):
скопировать код в буфер обмена
скопировать код в буфер обмена
- array (size=2)
- 0 => string 'ячейка1 \t ячейка2 \t "ячейка3 \r\n ячейка3 часть2" \r\n' (length=85)
- 1 => string 'ячейка1 \t ячейка2 \t "ячейка3" \r\n' (length=54)