[Сценарий] Чтение и запись в текстовый файл

Не требует установки программ или изменения файлов

Модераторы: immortal, newz20

Igor3691
Сообщения: 24
Зарегистрирован: Ср июн 28, 2017 1:48 pm
Благодарил (а): 14 раз
Поблагодарили: 0

Re: [Сценарий] Чтение и запись в текстовый файл

Сообщение Igor3691 » Пн окт 14, 2019 1:06 pm

К сожалению, этот пример выводит весь имеющийся текст в одно свойство.
Chainik
Сообщения: 1463
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: [Сценарий] Чтение и запись в текстовый файл

Сообщение Chainik » Пн окт 14, 2019 3:13 pm

Igor3691 писал(а):
Пн окт 14, 2019 1:06 pm
К сожалению, этот пример выводит весь имеющийся текст в одно свойство.
Надо проверять, что не так.

Вставляю код в онлайн-тестировщик кода (https://www.jdoodle.com/php-online-editor/)

Код: Выделить всё

<?php

$data = "data:XXX";
$data = explode('data:', $data);
$data = end($data);
    
    print($data);
    
?>
и все отрабатывает корректно (результат "XXX").
За это сообщение автора Chainik поблагодарил:
Igor3691 (Вт окт 15, 2019 4:12 pm)
Рейтинг: 1.16%
Igor3691
Сообщения: 24
Зарегистрирован: Ср июн 28, 2017 1:48 pm
Благодарил (а): 14 раз
Поблагодарили: 0

Re: [Сценарий] Чтение и запись в текстовый файл

Сообщение Igor3691 » Пн окт 14, 2019 9:32 pm

Одна строка - да, а несколько:

<?php

$data = "data:XXX";
$data = explode('data:', $data);
$data = end($data);

$play = "play:YYY";
$play = explode('play:', $play);
$play = end($play);

$volume = "volume:ZZZ";
$volume= explode('volume:', $volume);
$volume= end($volume);

$status = "status:WWW";
$status = explode('status:', $status);
$status = end($status);

print($data);
print($play);
print($volume);
print($status);

?>


Результат: "XXXYYYZZZWWW"
Chainik
Сообщения: 1463
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: [Сценарий] Чтение и запись в текстовый файл

Сообщение Chainik » Пн окт 14, 2019 9:51 pm

Igor3691 писал(а):
Пн окт 14, 2019 9:32 pm
Одна строка - да, а несколько:
...
Результат: "XXXYYYZZZWWW"
Собственно, ничего неожиданного. Так и должно быть.
Задача формулировалась как: "выбрать все символы до конца строки, после определенного сочетания символов".
Если это не то, что вам нужно, то надо уточнить задачу (желательно, с приведением релевантного фрагмента реальных данных) и то, как должен выглядеть конечный результат.
За это сообщение автора Chainik поблагодарил:
Igor3691 (Вт окт 15, 2019 4:12 pm)
Рейтинг: 1.16%
Igor3691
Сообщения: 24
Зарегистрирован: Ср июн 28, 2017 1:48 pm
Благодарил (а): 14 раз
Поблагодарили: 0

Re: [Сценарий] Чтение и запись в текстовый файл

Сообщение Igor3691 » Пн окт 14, 2019 11:15 pm

Каждая строка в своё свойство объекта.
Примерно так в текстовом файле:

stn:Russkoe radio
vol:254
tit:Leps
sts:1

Результат - свойства объекта KaRadio:

KaRadio.station - Russkoe radio
KaRadio.volume - 254
KaRadio.play - Leps
KaRadio.status - 1
Chainik
Сообщения: 1463
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: [Сценарий] Чтение и запись в текстовый файл

Сообщение Chainik » Вт окт 15, 2019 8:45 am

Теперь ситуация более-менее прояснилась. Можете прислать реальный файл?
Если действительно в файле каждый смысловой фрагмент начинается с новой строки, то представляется, что особых трудностей для извлечения нужных данных быть не должно. Осталось только выяснить, какой символ используется в файле для перехода на новую строку.
За это сообщение автора Chainik поблагодарил:
Igor3691 (Вт окт 15, 2019 3:46 pm)
Рейтинг: 1.16%
Igor3691
Сообщения: 24
Зарегистрирован: Ср июн 28, 2017 1:48 pm
Благодарил (а): 14 раз
Поблагодарили: 0

Re: [Сценарий] Чтение и запись в текстовый файл

Сообщение Igor3691 » Вт окт 15, 2019 1:01 pm

Да, вот он.
Вложения
dialog_result .txt
(75 байт) 247 скачиваний
Chainik
Сообщения: 1463
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: [Сценарий] Чтение и запись в текстовый файл

Сообщение Chainik » Вт окт 15, 2019 2:46 pm

Можно попробовать так:

Код: Выделить всё

$data=LoadFile('путь_к_файлу');
preg_match('/num: ([^
]*)/', $data, $matches);
SetGlobal('object.property',$matches[1]);
preg_match('/stn: ([^
]*)/', $data, $matches);
SetGlobal('object.property',$matches[1]);
и т.д. Для каждого параметра объект.свойства, разумеется, свои.

Во всяком случае у меня в онлайн-тестировщике кода необходимое содержимое из вашего файла прекрасно вычленяется.

Код: Выделить всё

<?php

$data = 'vol: 254
num: 11
stn: RUSSIAN POP 80-90
tit: Meladze Valeriy - Vera
sts: 1
';
 
preg_match('/stn: ([^
]*)/', $data, $matches);
echo $matches[1];
    
?>
Результат: "RUSSIAN POP 80-90".
За это сообщение автора Chainik поблагодарил:
Igor3691 (Вт окт 15, 2019 3:48 pm)
Рейтинг: 1.16%
fandaymon
Сообщения: 1555
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: [Сценарий] Чтение и запись в текстовый файл

Сообщение fandaymon » Вт окт 15, 2019 3:42 pm

Любите вы из пушки по воробьям стрелять....

Код: Выделить всё

$lines = file('путь_к_файлу',FILE_IGNORE_NEW_LINES);

foreach ($lines as  $line) {
 $values=explode(':',$line);
 if (count($values)>1) {
  SetGlobal('KaRadio.'.$values[0],$values[1]);
 }
}
как-то так
За это сообщение автора fandaymon поблагодарили (всего 2):
Chainik (Вт окт 15, 2019 4:03 pm) • Igor3691 (Вт окт 15, 2019 4:09 pm)
Рейтинг: 2.33%
Chainik
Сообщения: 1463
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: [Сценарий] Чтение и запись в текстовый файл

Сообщение Chainik » Вт окт 15, 2019 3:55 pm

fandaymon писал(а):
Вт окт 15, 2019 3:42 pm
Любите вы из пушки по воробьям стрелять....
...
Ну, батенька, для этого нужно быть программистом. А мы даже на звание "любителя" не претендуем.
Еще маленькое уточнение, у постановщика задачи наименования свойств не совпадают с наименованиями ключей массива. Чтобы в точности воспользоваться вашим примером (замечательным, надо отметить) постановщику задачи придется переименовывать наименования своих свойств.
За это сообщение автора Chainik поблагодарил:
Igor3691 (Вт окт 15, 2019 4:12 pm)
Рейтинг: 1.16%
Ответить