Я не лучший на PHP и был бы очень благодарен, если бы кто-нибудь мог помочь. В основном мне нужно разобрать каждую строку данных и просто получить каждый бит информации между каждым «|» - тогда я могу добавить его в базу данных. Я думаю, что я могу обработать получение информации между «|» с помощью взрыва, но мне нужно немного помочь в синтаксическом анализе каждой строки из текстового файла как единственного числа. Infact, чтобы сделать его еще более простым, мне просто нужно использовать каждую строку переменной, я отправлю содержимое переменной с помощью текстового поля и формы. Любая помощь будет принята с благодарностью!Parsing A Data Feed
ответ
Вы можете прочитать файл в массив строк и делать все расщеплению с:
$lines = file("filename");
foreach($lines as $line) {
$parts = explode("|", $line);
// do the database inserts here
}
Если у вас уже есть весь текст в переменной, как вы сказали (например, с чем-то вроде file_get_contents()), вы можете сначала взорваться на \ n, а затем выполнить тот же оператор foreach, что и выше.
Если файл маленький, вы можете использовать file() t o прочитать его в массиве, по одной строке на элемент.
В противном случае, прочитать файл в цикле, используя fgets()
$handle = fopen("/tmp/inputfile.txt", "r");
while (!feof($handle)) {
$buffer = fgets($handle, 4096);
echo $buffer;
}
fclose($handle);
Если вы читаете из вашего TEXTAREA поста, вы можете использовать функцию взрывать с помощью символа новой строки, как ваш разделитель, чтобы получить каждую «линию» в переменной как новый элемент массива, тогда вы можете взорвать элементы массива.
т.е.
$sometext = "balh | balh blah| more blah \n extra balh |some blah |this blah";
$lines = explode("\n", $sometext);
foreach($lines as $oneLine)
{
$lineElements[] = explode("|", $oneLine);
}
то есть 2d массив ваших elems.
Если вы читаете из файла, вы можете просто использовать функцию файла документированной здесь:
http://us2.php.net/manual/en/function.file.php
, чтобы получить каждую строку файла в качестве элемента массива.
@ zuk1: Это будет работать, если вы на самом деле не читаете файл. – 2008-10-21 07:00:45
Вы можете использовать взрываются, чтобы получить как:
$myFile = "File.txt";
$fh = fopen($myFile, 'r');
$data = fread($fh);
fclose($fh);
$newLines = explode("\n",$data);
foreach($newLines as $s)
{
$parsed = explode("|",$s);
foreach($parsed as $item)
{
// do your db load here
}
}
Существует готовый встроенный PHP разборе библиотеки, которая может автоматически распознавать формат CSV.
Пример:
$reader = new Dfp_Datafeed_File_Reader();
$reader->setLocation('test.csv');
foreach ($reader AS $record) {
print_r($record);
}
Она доступна для загрузки here, и есть какая-то документация here.
@ zuk1: Это будет работать, если вы читаете фактический файл. – 2008-10-21 07:01:36