Как я могу повторить php с php? - PullRequest
0 голосов
/ 07 марта 2011

Сайт, который я разрабатываю, использует шаблоны "header" и "footer". Эти шаблоны включены на каждой странице сайта. Шаблон заголовка открывает HTML-код и содержит полный тег head , а затем открывает тег body . Шаблон нижнего колонтитула закрывает тег body , а затем закрывает HTML-код. Основная структура выглядит следующим образом:

<?php
//Set the current page name so it can be highlighted in the menu bar
$page="Home";
//For page-specific HEAD includes
$headincludes=array("<some type of code>","<some other type of code>");
include("/assets/template/header.php");
?>
<!--START PAGE CONTENT-->
<!--END PAGE CONTENT-->
<?php
include("/assets/template/footer.php");
?>

Шаблон заголовка выгружает массив headinclude в раздел head страницы следующим образом:

foreach ($headincludes as $toecho)
echo $toecho;

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

Ответы [ 8 ]

2 голосов
/ 07 марта 2011

Да, eval() (читай evil()), однако вам лучше пересмотреть свой подход.Возможно, если вы хотите включить значительный объем кода PHP, передайте массив файлов, которые могут быть дополнительно включены:

// at the beginning of the file
$includes = array('db.php', 'config.php');


// in your header, or footer (whichever is applicable)
foreach($includes as $file){
    if(file_exists($file)){
        include $file; // or include_once
    }
}

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

0 голосов
/ 07 марта 2012

Если вы пытаетесь вывести php-файл, убедитесь, что вы делаете это легко, но ваш браузер не сможет работать.

Так что вам нужно:

  • Оценить php-файл и вывести результат

или

  • Создайте HTML-файл, который вы будете выводить вместо php-файла.

include_once () или include () все равно ваши друзья, он (как и чтение имени) включает файл, и файл "исполняется" в этом самом месте , «Однажды» версия не будет включать один и тот же файл дважды, если он уже был включен ранее (полезно, если вы делаете несколько включений, которые, в свою очередь, делают другие включения).

0 голосов
/ 07 марта 2011

Попробуйте это:

echo eval('?>html or javascript<?');
echo eval('php');
0 голосов
/ 07 марта 2011

вы пробовали объединять строки. как это

$headincludes=array("<your html code>".$variable."<more html>","<more>")
0 голосов
/ 07 марта 2011

что в $headincludes

примечание : использование include_once

0 голосов
/ 07 марта 2011

Выполните код PHP в ваших основных файлах и выведите результат в $headincludes.Нет необходимости выполнять код в заголовке, результат не изменится.

Или так?Если вы на самом деле пытаетесь внедрить произвольный код в другой код, вы делаете это неправильно.

0 голосов
/ 07 марта 2011

Что вы добавляете в свой массив?

Если вы устанавливаете свой php так:

$headincludes=array("$var1","$var2");

это не будет работать. Вы должны сделать так:

$headincludes=array($var1,$var2);
0 голосов
/ 07 марта 2011

Способ выполнения PHP из строки - с помощью eval(), однако это редко правильный инструмент для использования.

Можете ли вы разместить нужный PHP выше $headincludes, а затем добавить его вывод в $headincludes?

<?php
//Set the current page name so it can be highlighted in the menu bar
$page="Home";

include 'generators.php';

$links = generateLinks('some_arg');

//For page-specific HEAD includes
$headincludes=array("<some type of code>","<some other type of code>", $links);
include("/assets/template/header.php");
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...