Включить файл PHP, который содержит код PHP

В моем файле для чтения я проверяю $_GET и читаю запись из базы данных.

У меня есть схема контактной информации. Сохранено в файле "contact.php". Но в базе данных я просто использовал "[contact]" как текст.

Вот что я делаю для вызова этого файла contact.php:

$contactinfo = file_get_contents('contact.php');
$mydata = str_replace("[contact]", $contactinfo, $mydata);
return html_entity_decode($mydata);

Это работает отлично. Потому что мой файл "contact.php" содержит только HTML.

Здесь моя проблема. У меня есть другой файл, "contactform.php". Эта форма содержит HTML и PHP-метод для заполнения выбранного ввода с городами. Я имею в виду, мой файл "contactform.php" выглядит так:

<form>
Name: <input name bla bla>
Email: <input email bla bla>
City: <?php getcities(); ?>
<input submit bla bla>
</form>

Я использую точно такой же метод. Но я получаю только:

<form>
Name: <input name bla bla>
Email: <input email bla bla>
City: <!-- <?php getcities(); ?> -->
<input submit bla bla>
</form>

Моя PHP часть преобразуется в строку комментария. Другие части работают нормально. Как я могу решить эту проблему?

2 ответа

Вам нужно изменить логику и заменить file_get_contents, чтобы требовать ИЛИ включать ИЛИ требовать ИЛИ включать или включать.

Вам нужно изменить свой код

ob_start( );
require('contact.php');
$contactinfo = ob_get_clean( );
$mydata = str_replace("[contact]", $contactinfo, $mydata);
return html_entity_decode($mydata);

или если использовать ob_get_contents

ob_start();
echo "You main script, before contact ";

ob_start();
echo "contact form";
$ob_2 = ob_get_contents();
ob_end_clean();

echo "and after contact";
$ob_1 = ob_get_contents();
ob_end_clean();

echo "This is OB_1: ".$ob_1."\n"; //returned "This is OB_1: You main script, before contact and after contact"
echo "This is OB_2: ".$ob_2."\n"; //returned "This is OB_2: contact form"

Если вы можете выделить строку с помощью некоторого регулярного выражения, eval () сделает свое дело.

Другие вопросы по тегам