PHP код выводится как текст


Имеется таблица в базе, которая хранит различные HTML-блоки вместе с параметром (PHP-кодом, который должен при выводе подставлять значения из массива). введите сюда описание изображения

Однако при выводе этого кода через ECHO на страницу я имею

<a href="<?=$info['floating-button_link']?>" class="floating-button__module">
<img class="floating-button__module-img" src="<?=$info['floating-button_img']?>">
</a>

Каким образом реализовать вывод кода на страницу, чтобы PHP код внутри компилировался?


Ответы (1 шт):

Автор решения: Gust

вариант с созданием временного файла:

$info = array( // заранее оъявленная переменная $info; массив; с ключами floating-button_link и floating-button_img
    'floating-button_link'  => 'ssylka',
    'floating-button_img'   => 'cartinka',
);

$db_string_result = '<a href="<?=$info[\'floating-button_link\']?>" class="floating-button__module">
<img class="floating-button__module-img" src="<?=$info[\'floating-button_img\']?>">
</a>'; // строка кода из БД

file_put_contents('tmp.php',$db_string_result); // сохранить в файл tmp.php
include 'tmp.php'; // подключить файл tmp.php
unlink('tmp.php'); // удалить файл tmp.php

Переменная $info должна быть известна до этапа include 'tmp.php';.


Вариант с поиском, заменой и eval()

$result_string = preg_replace_callback("#\<\?\=(.*?)\?\>#",function($find)use($info){
    return eval("return {$find[1]};");
},$db_string_result);

print $result_string;
→ Ссылка