Проблема при загрузке php-файла в переменную (Загрузить результат php-кода вместо кода в виде строки)

У меня есть архитектор сайта, где я назначаю содержимое переменным, а затем печатаю их на главной странице. Моя проблема заключается в том, что PHP-код на вспомогательных страницах импортируется в переменные как строки. Есть ли в любом случае, чтобы убедиться, что код действительно выполнен, и результаты импортируются вместо переменных?

В приведенном ниже примере php-код в signup_header.php импортируется как строка в $ page_header. В результате элемент getVerifiedEmail ();?> "Отображается в элементе формы вместо адреса электронной почты.

master.php

<!DOCTYPE HTML> <html> <head> <?php echo $page_header; ?> </head> <body id="home"> <div class = "container"> <?php echo $page_content; ?> </div> </body> </html> 

signup.php:

 <?php $page_content = file_get_contents("./include/signup_content.php"); $page_header = file_get_contents("./include/signup_header.php"); include('master.php'); ?> в <?php $page_content = file_get_contents("./include/signup_content.php"); $page_header = file_get_contents("./include/signup_header.php"); include('master.php'); ?> 

signup_header.php

 <script type="text/javascript"> $(document).ready(function(){ $('input[name="name"]').attr('value', "<?php echo $idpAssertion->getVerifiedEmail(); ?>"); }); </script> 

signup_content.php

 <section> <form class="task" method="POST"> Name: <input type="text" name="name" maxlength="30" value=""/><br/> Email: <input type="text" name="email" value=""/><br/> UserId: <input id="userId" type="text" name="userId" value="" /><br/> </form> </section> 

 <?php $page_content = "./include/signup_content.php"; $page_header = "./include/signup_header.php"; include('master.php'); ?> в <?php $page_content = "./include/signup_content.php"; $page_header = "./include/signup_header.php"; include('master.php'); ?> 

а также

 <!DOCTYPE HTML> <html> <head> <?php include $page_header; ?> </head> <body id="home"> <div class = "container"> <?php include $page_content; ?> </div> </body> </html> 

это все

Я надеюсь, что signup_content.php содержит только аналогичный шаблон

Использование file_get_contents Docs вернет содержимое фактического файла. Но вместо этого вы хотите выполнить файл. Вы можете использовать include Docs для выполнения php-файла, однако чаще всего этот файл будет сам создавать результат. Это, вероятно, не то, что вы хотите.

Вместо этого вы можете использовать include но поймать вывод в буфер. Это называется обработкой данных с буферизацией .

Чтобы сделать это более доступным для вашей программы, вы можете создать небольшую вспомогательную функцию, которая имеет дело с деталями. Затем вы можете просто вызвать эту функцию, которая будет включать файл, о котором идет речь, и вернуть фактический результат. Затем вы можете присвоить возвращаемое значение вашим переменным.

Пример:

 <?php /** * include_get_contents * * include a file and return it's output * * @param string $path filename of include * @return string */ function include_get_contents($path) { ob_start(); include($path); return ob_get_clean(); } $page_content = include_get_contents("./include/signup_content.php"); $page_header = include_get_contents("./include/signup_header.php"); include('master.php'); ?> в <?php /** * include_get_contents * * include a file and return it's output * * @param string $path filename of include * @return string */ function include_get_contents($path) { ob_start(); include($path); return ob_get_clean(); } $page_content = include_get_contents("./include/signup_content.php"); $page_header = include_get_contents("./include/signup_header.php"); include('master.php'); ?> в <?php /** * include_get_contents * * include a file and return it's output * * @param string $path filename of include * @return string */ function include_get_contents($path) { ob_start(); include($path); return ob_get_clean(); } $page_content = include_get_contents("./include/signup_content.php"); $page_header = include_get_contents("./include/signup_header.php"); include('master.php'); ?> 

Связано: ответ на изменение существующей функции PHP для возврата строки

file_get_contents возвращает фактическое содержимое файла, вам нужно include , который фактически анализирует файл PHP.

в использовании signup.php

 <?php $page_content = include("./include/signup_content.php"); $page_header = include("./include/signup_header.php"); include('master.php'); ?> в <?php $page_content = include("./include/signup_content.php"); $page_header = include("./include/signup_header.php"); include('master.php'); ?> 

это то, что вам нужно.

использование может использовать функцию eval

http://php.net/manual/en/function.eval.php

 $string = eval('?'.'>'.file_get_contents('signup_content.php',1).'<'.'?'); echo $string;