Вопрос

У меня есть переменные 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>>>

Это было полезно?

Решение

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

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

Другие советы

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

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

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;
}
$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>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top