Получение и использование данных из txt файла

12
[Удален]
1248

Всем добрый вечер!

Есть проблема.

Задача следующая:

1. Отрываем файл txt и рандомно берем от туда одну строку (в каждой строке значение, типа: ufa, kazan, msk и т.д. - каждое значение с новой строки)

2. Открываем txt файл по адресу: foto/полученное значение/text.txt

И далее необходимо это вывести.

Есть элементарный скрипт:


$txt = file('gorod.txt');
$str = $txt[ array_rand($txt) ];
unset($txt);
echo $str;

Выводит полученную строку, но как ее далее задействовать?

Такой код не работает:


$txt = file('gorod.txt');
$str = $txt[ array_rand($txt) ];
unset($txt);
echo $str;
$txtg = file('foto/'.$str.'/text.txt');
$strg = $txtg[ array_rand($txtg) ];
unset($txtg);
echo $strg;

Там еще есть вопросы, но это основной. Готов оплатить помощь.

K0
На сайте с 01.09.2016
Offline
72
#1

Вам нужно просто вывести содержимое foto/полученное значение/text.txt целиком?

Тогда так:

$txt = file('gorod.txt'); 

$str = $txt[array_rand($txt)];
unset($txt);
echo $str;
$txtg = file('foto/'.$str.'/text.txt');
echo $txtg;
unset($txtg);
S
На сайте с 30.09.2016
Offline
469
#2

Да вроде ничего сложного.

$txtg = file('foto/'.trim($str).'/text.txt');

Ну и плюс к этому проверьте, чтобы адрес был правильный.

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
M
На сайте с 04.12.2013
Offline
223
#3

Да, обязательно in_array или хотя бы is_file, хотя в последнем случае есть риск доступа к произвольному файлу text.txt на сервере.

---------- Добавлено 15.10.2016 в 13:31 ----------

birseo:
Там еще есть вопросы, но это основной. Готов оплатить помощь.
Я бы вам посоветовал и при необходимости помог перейти на использование БД.
Домены и скрипт для коротких ссылок: https://u75.ru/domains-for-shortcuts
S
На сайте с 30.09.2016
Offline
469
#4
miketomlin:
хотя бы is_file

Для начала хотя бы "глазами":). Потому что адрес не от корня сервера, и не факт, что скрипт в той же директории, что и файлы.

miketomlin:
перейти на использование БД.
Зависит от конкретики. Если на сайте информация из десяти строчек по десяти городам, то и нечего огород с БД городить. Здесь txt + xml рулит.
L
На сайте с 10.02.2015
Offline
260
#5

В некоторых случаях лучше использовать json вместо xml, его плюсы:

а) меньше размер файла

б) быстрее парсинг

в) однозначность представления

[Удален]
#6
kom09:
Вам нужно просто вывести содержимое foto/полученное значение/text.txt целиком?

Тогда так:
$txt = file('gorod.txt'); 

$str = $txt[array_rand($txt)];
unset($txt);
echo $str;
$txtg = file('foto/'.$str.'/text.txt');
echo $txtg;
unset($txtg);

Да, нужно вывести данные из файла в папке.

---------- Добавлено 15.10.2016 в 15:37 ----------

Sitealert:
Да вроде ничего сложного.
$txtg = file('foto/'.trim($str).'/text.txt');

Ну и плюс к этому проверьте, чтобы адрес был правильный.

Не работает такой вариант

---------- Добавлено 15.10.2016 в 15:39 ----------

miketomlin:
Да, обязательно in_array или хотя бы is_file, хотя в последнем случае есть риск доступа к произвольному файлу text.txt на сервере.

---------- Добавлено 15.10.2016 в 13:31 ----------

Я бы вам посоветовал и при необходимости помог перейти на использование БД.

Думал об этом, но не хочу лишними запросами сервер перегружать...

M
На сайте с 04.12.2013
Offline
223
#7
Sitealert:
Потому что адрес не от корня сервера...

Это без разницы. Web-сервер может спокойно пропустить адрес с компонентами вроде /../

[Удален]
#8
livetv:
В некоторых случаях лучше использовать json вместо xml, его плюсы:
а) меньше размер файла
б) быстрее парсинг
в) однозначность представления

Возможно, но нет опыта с этим.. И файлы маленькие, под другие системы настроено

LEOnidUKG
На сайте с 25.11.2006
Offline
1773
#9

$txt = file('gorod.txt');

замените:

$txt = file('gorod.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

И должно произойти чудо :)

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
M
На сайте с 04.12.2013
Offline
223
#10
birseo:
Думал об этом, но не хочу лишними запросами сервер перегружать...

Мучить диск, парсить файл целиком каждый раз и т.п. – тоже не лучший вариант.

P.S. Для критиков: я в курсе про кэш ФС. По-хорошему лучше вообще задействовать явно какой-нить механизм, чтобы держать это все постоянно в памяти в структурированном виде.

---------- Добавлено 15.10.2016 в 15:50 ----------

LEOnidUKG:
И должно произойти чудо :)
То ж про это думал, но проверку нужно все равно делать.
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий