Включая динамический HTML с PHP - PullRequest
0 голосов
/ 24 октября 2009

У меня есть переменные PHP для размещения во включенном HTML-файле. Какой лучший способ выполнить это?

//contents of file1.php
$variable1 = "text 1";
$variable2 = "text 2"
$newContent = include('file2.php');
echo $newContent;

//contents of file2.php
<p>standard HTML with PHP... <strong><?=$variable1?></strong></p>
<p><?=$variable2?></p>

Этот общий метод считается приемлемым, но фактический код здесь не работает. Использую ли я file_get_contents () или include (), как мне выполнить PHP в файле include для вывода правильного содержимого?

Должен ли я использовать что-то вроде HTML>>>

Ответы [ 3 ]

4 голосов
/ 24 октября 2009

То, что вы делаете, прекрасно, и вы обнаружите, что большинство людей используют один и тот же точный метод. Лично я бы не использовал короткие теги PHP (некоторые хосты не включают его), но это вопрос предпочтений.

Редактировать: Что касается вашего редактирования, кажется, что у вас не включены короткие теги. Проверьте свой ini (http://php.net/manual/en/ini.core.php). Но вы на самом деле не должны использовать короткие теги, потому что, как упоминает clownbaby, PHP 6 будет их устаревать. Даже если вы не заботитесь о проверке кода в будущем они по-прежнему хлопотны (что очевидно, потому что ваш код не работает). Переключитесь на <?php echo $variable1; ?>, и все будет в порядке.

2 голосов
/ 24 октября 2009
$newContent = include('file2.php');
echo $newContent;

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

Как сказал ekhaled, вам может потребоваться включить короткие теги или заменить их на всегда поддерживаемый <?php ... ?> синтаксис в стиле инструкций обработки.

Однако важно htmlspecialchars каждую текстовую строку при ее включении в HTML, иначе у вас есть потенциальная дыра в безопасности XSS.

<?php
    function h($text) {
        echo(htmlspecialchars($text, ENT_QUOTES));
    }
?>
...

<p>standard HTML with PHP... <strong><?php h($variable1) ?></strong></p>
<p><?php h($variable2) ?></p>
2 голосов
/ 24 октября 2009

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

относительно использования коротких тегов, некоторые серверы не разрешают это, поэтому я использую обходной путь:

if ((bool) @ini_get('short_open_tag') === FALSE){
   echo eval('?>'.preg_replace("/;*\s*\?>/", "; ?>", str_replace('<?=', '<?php echo ', file_get_contents("path/to/file2.php"))));
}else{
   $newContent = include("path/to/file2.php");
   echo $newContent;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...