2014-01-21 5 views
0

Это должно быть относительно легко, но я изо всех сил пытаюсь найти решение. Я получаю данные с использованием проприетарного сетевого протокола с шифрованием, а в конце весь полученный контент попадает в переменную. Содержимое - это файл CSV, и мне нужно проанализировать эти данные.Parse CSV content

Если это был обычный файл на диске, я мог бы использовать fgetcsv; если бы я мог каким-то образом разбить содержимое на отдельные записи, я мог бы использовать str_getcsv - но как я могу разбить этот файл на записи? Простое чтение до тех пор, пока новая строка не будет работать, потому что CSV может содержать значения с разрывами строк в них. Ниже приведен примерный набор данных:

ID,SLN,Name,Address,Contract no 
123,102,Market 1a,"Main street, Watertown, MA, 02471",16 
125,97,Sinthetics,"Another address, 
Line 2 
City, NY 10001",16 
167,105,"Progress, ahead",,18 

Все эти данные хранятся внутри одной переменной - и мне нужно ее проанализировать.

Конечно, я всегда могу записать эти данные во временный файл на диске, прочитав/проанализировав его с помощью fgetcsv, но мне кажется крайне неэффективным.

+0

[Здесь] (http://stackoverflow.com/questions/11337221/codeigniter-rest- csv-import-to-mysql/11339125 # 11339125) является ответом. Используйте эту библиотеку –

+0

@raheelshan Вы прочитали вопрос? Эта «библиотека» читает из файла - и у меня нет файла. Если бы у меня был файл, я бы не стал задавать этот вопрос, я знаю, как читать CSV-данные из файла. –

ответ

0

fgetcsv Если работает для вас, подумайте:

file_put_contents("php://temp",$your_data_here); 
$stream = fopen("php://temp","r"); 
// $result = fgetcsv($stream); ... 

Более подробную информацию о php://temp см the php:// wrapper

+0

Это прекрасно! Благодаря! Один вопрос: если я тогда буду 'file_put_contents' в' php: // temp' во второй раз, перезапишет ли он ранее написанный контент? –

+0

Должно быть, да. Я фактически не использовал 'php: // temp' сам, но я бы предположил, что это сработает так, как если бы вы использовали файл под названием php_temp' - вы можете читать, писать, добавлять, перезаписывать ... –

+0

Это замечательно , благодаря! –