Страница 2 из 3

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

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

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

Добавлено: Пн окт 14, 2019 3:13 pm
Chainik
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").

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

Добавлено: Пн окт 14, 2019 9:32 pm
Igor3691
Одна строка - да, а несколько:

<?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"

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

Добавлено: Пн окт 14, 2019 9:51 pm
Chainik
Igor3691 писал(а): Пн окт 14, 2019 9:32 pm Одна строка - да, а несколько:
...
Результат: "XXXYYYZZZWWW"
Собственно, ничего неожиданного. Так и должно быть.
Задача формулировалась как: "выбрать все символы до конца строки, после определенного сочетания символов".
Если это не то, что вам нужно, то надо уточнить задачу (желательно, с приведением релевантного фрагмента реальных данных) и то, как должен выглядеть конечный результат.

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

Добавлено: Пн окт 14, 2019 11:15 pm
Igor3691
Каждая строка в своё свойство объекта.
Примерно так в текстовом файле:

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

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

KaRadio.station - Russkoe radio
KaRadio.volume - 254
KaRadio.play - Leps
KaRadio.status - 1

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

Добавлено: Вт окт 15, 2019 8:45 am
Chainik
Теперь ситуация более-менее прояснилась. Можете прислать реальный файл?
Если действительно в файле каждый смысловой фрагмент начинается с новой строки, то представляется, что особых трудностей для извлечения нужных данных быть не должно. Осталось только выяснить, какой символ используется в файле для перехода на новую строку.

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

Добавлено: Вт окт 15, 2019 1:01 pm
Igor3691
Да, вот он.

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

Добавлено: Вт окт 15, 2019 2:46 pm
Chainik
Можно попробовать так:

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

$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".

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

Добавлено: Вт окт 15, 2019 3:42 pm
fandaymon
Любите вы из пушки по воробьям стрелять....

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

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

foreach ($lines as  $line) {
 $values=explode(':',$line);
 if (count($values)>1) {
  SetGlobal('KaRadio.'.$values[0],$values[1]);
 }
}
как-то так

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

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