У меня есть архитектор сайта, где я назначаю содержимое переменным, а затем печатаю их на главной странице. Моя проблема заключается в том, что 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;