Включить файл 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 () сделает свое дело.