Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/16: Рейтинг темы: голосов - 16, средняя оценка - 5.00
Дмитроо

Скрипт на php, записывающий данные в .csv файл

29.01.2014, 14:20. Показов 3064. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе время суток, уважаемые. Проблема в скрипте. От него требуется, чтобы он записывал значения Name Price и тд. в .csv файл в одну строку до повторения , данные берет из файла вида
name : значение имени
price : значение цены ..
name : значение имени
и тд.
Нужно, чтобы значения записывались в одну строку, скрипт записывает их каждый на новой строке.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
$handle = fopen("/Users/Dimas/Desktop/4.txt", "r"); 
if ($handle) 
{
$Name='';
$Price=''; 
$image_urls=''; 
$desc=''; 
$vars=''; 
$flag=0; 
while (($buffer = fgets($handle, 4096)) !== false) 
{ 
if($flag==2) 
{ 
$fp = fopen("/Users/Dimas/Desktop/catalogue.csv", "a"); 
$test = fwrite($fp,$Price.';'.$image_urls.';'.$desc.';'.$vars."\r\n"); 
fclose($fp); 
$flag=1; 
} 
$posn = strpos($buffer, "name:"); 
if ($posn !== false){$Name=substr($buffer, $posn+strlen("name:"));}
$posn = strpos($buffer, "price:"); 
if ($posn !== false){$Price=substr($buffer, $posn+strlen("price:"));$flag++;} 
$posn = strpos($buffer, "image_urls:"); 
if ($posn !== false){$image_urls=substr($buffer, $posn+strlen("image_urls:"));} 
$posn = strpos($buffer, "desc:"); 
if ($posn !== false){$desc=substr($buffer, $posn+strlen("desc:"));} 
$posn = strpos($buffer, "vars:");
}
}
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.01.2014, 14:20
Ответы с готовыми решениями:

Батник, записывающий данные в txt-файл
Доброго времени суток всем! Прошу помощи по работе. Столкнулся с необходимостью написания bat файла, а дело с ними не имел никогда и что к...

Скрипт php для преобразования hex csv файла
Всем привет! Небольшая предыстория: Слетела база данных календаря windows live mail 2012. Календарь вёлся офлайн, и его нет на...

Скрипт, подключающийся к БД и скачивающий таблицу в CSV-файл
Добрый день. Нужен скрипт который подключается к базе данных, считывает определенную таблицу и выгружает в CSV файл данные на компьютер....

2
217 / 157 / 30
Регистрация: 11.05.2010
Сообщений: 614
29.01.2014, 16:34
если для каждого параметра всегда есть строка в изначальном файле, тогда можно попробовать так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$file = file ("/Users/Dimas/Desktop/4.txt"); // читаем файл построчно в массив
$step = 4; // 4 - количество значений для одной исходной
$out = ''; // переменная с результатом, её потом и запишем в csv файл
// далее шагая большими шагами, 1 шаг - 1 элемент
for ($i = 0; isset($file[$i+$step]); $i += $step) {
    // считываем разные значения(строки) относительно одного элемента
    for ($j = 0; $j < $step; $j++) {
        $tmp = explode (':', $file[$i+$j]);
        // и складываем в переменную то, что после двоеточия, добавляя вконце ';'
        $out = $tmp[1] . ';';
    }
    // удаляем лишний символ ';' и добавляем перевод строки (константой PHP_EOL)
    $out = substr ($out, -1) . PHP_EOL;
}
//удаляем лишний перевод строки
$out = rtrim ($out);
echo "<pre>$out</pre>";
Не проверял. Попробуй, если выведет на экран в нужном виде, тогда смело можно переменную $out писать в файл.
Если комментарии не понятны, переспроси, попробую понятнее объяснить.
0
 Аватар для Drygba
512 / 454 / 119
Регистрация: 17.02.2012
Сообщений: 1,032
Записей в блоге: 1
29.01.2014, 18:20
Цитата Сообщение от Дмитроо Посмотреть сообщение
скрипт записывает их каждый на новой строке
PHP
1
$buffer = fgets($handle, 4096)
Берет строку вместе с переносом строки, удалите перенос и должно заработать.

Как вариант.
Разделитель - :
В переменную $lastIndex = указываем последнее имя в цепочке переменных.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$handle = fopen(""/Users/Dimas/Desktop/4.txt"", "r");
if ($handle) {
    $lastIndex = 'vars';
    $temp = array();
    while (($buffer = fgets($handle, 4096)) !== false) {
        $posDelimiter = strpos($buffer, ':');
 
        if ($posDelimiter === false) {
            break;
        }
 
        $temp[] = rtrim(substr($buffer, $posDelimiter+1), PHP_EOL);
 
        if ($lastIndex === substr($buffer, 0, $posDelimiter)) {
            file_put_contents('catalogue.csv', implode(';', $temp) . PHP_EOL, FILE_APPEND);
            $temp = array();
            continue;
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.01.2014, 18:20
Помогаю со студенческими работами здесь

Есть ли скрипт записывающий результаты и ответы теста на бд?
Существует ли скрипт, который записывает результаты и ответы теста в бд? Как сделать систему, где с помощью ответов пользователя...

Как записать данные в файл csv?
Ситуация следующая: у меня есть определенная статистика, которая генерируется с помощью написанного кода в python. Код написал я сам, т.е....

Как записать данные в файл CSV
Коллеги всем добрый вечер. Прошу у Вас помощи в такой ситуации. Я разрабатываю приложения на Wpf , у меня есть 4 TextBox в которых...

Как сохранить данные в CSV файл
Всем привет! Есть вот такой простенький парсер для авито. Как можно данные, которые распечатываются в циклах, записать в один CSV файл?...

Как записать данные в файл CSV?
Всем привет. Есть некоторые данные для записи в файл CSV (не StringGrid). Перерыл интернет, но везде описано сплошное чтение, а мне нужна...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru