- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Тренды маркетинга в 2024 году: мобильные продажи, углубленная аналитика и ИИ
Экспертная оценка Адмитад
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Откопал вот этот топик, в котором приведен пример кода, для вывода случайной строки из списка, сохраненного в файле.
$xs = file("x.txt");
shuffle($xs);
$xs = array_slice($xs, 0, 1);
foreach ($xs as $x)
{
$x = trim($x);
echo $x;
}
?>
Все работает как часы. Но возник один дополнительный вопрос.
Как поступить, если строка, подгружаемая из файла x.txt, в свою очередь также содержит конструкцию вида <?php echo 12345 ?>
В смысле можно ли каким-то образом заставить ее обрабатываться, а не выводиться лишь в виде текста.
можно
примерно так
<?php
$xs = file("x.txt");
shuffle($xs);
$xs = array_slice($xs, 0, 1);
foreach ($xs as $x)
{
if (preg_match('/\<\?php/i', $x)){
$x = str_ireplace('<?php echo \'', '', $x);
$x = str_ireplace('\'; ?>', '', $x);
$x = trim($x);
echo $x;
} else {
$x = trim($x);
echo $x;
}
}
?>
ps затупил, именно с обработкой, хз
Eval вам поможет.
Да, почитайте про функцию eval она выполнит ваш код.
инклюд, ёпта :)
приправить по вкусу буферизацией
Поддержу пред. оратора.
---------- Добавлено 28.08.2016 в 10:52 ----------
Хотя если построчно, то лучше eval.
Спасибо большое всем отписавшимся. Правда, все равно разобраться не могу.
1. Этим кодом выводим 3 случайных строки из файла:
<?php
$xs = file("random.txt");
shuffle($xs);
$xs = array_slice($xs, 0, 3);
foreach ($xs as $x)
{
$x = trim($x);
echo $x;
}
?>
2. В random.txt содержатся ссылки, у которых нужно сохранить get-параметр, поэтому к href добавляется необходимый код, и соответственно файл выглядит так:
<a href="/id2/<?php echo $sub; ?>"><img src="http://www.site.ru/images/id2.jpg"></a>
<a href="/id3/<?php echo $sub; ?>"><img src="http://www.site.ru/images/id3.jpg"></a>
…
3. Необходимо, чтобы <a href="/id1/ и <img src="http://www.site.ru/images/id1.jpg"></a> подгрузились как html, а <?php echo $sub; ?> обработался как php.
Т.е. получается echo внутри echo. При этом линк и название картинки совпадают (id1-id1, id2-id2 и т.п.).
ps Проблема в том, что в программировании я нуб 🤣. Поэтому разобраться, где юзать eval или include немного сложновато.
Joober, если строк много, думаю, shuffle будет не слишком эффективна.
Если php-вставка реально во всех строках повторяется, можно подобрать более эффективное и менее ресурсоемкое решение. Если еще и в ссылках реально такое единообразие имеется, вам достаточно в файле только список id-шников хранить, например:
какой eval?!
строка, подгружаемая из файла x.txt, в свою очередь также содержит конструкцию вида <?php echo 12345 ?>
какой .txt с php кодом?!
php include only!
Что касается исходного вопроса, то с помощью eval делается примерно так:
---------- Добавлено 28.08.2016 в 23:08 ----------
Alex Klo, вопрос ТС-а внимательно прочитайте.
---------- Добавлено 28.08.2016 в 23:12 ----------
P.S. Вместо ob_get_clean/echo можно использовать просто ob_end_flush.