Incluindo HTML dinâmico com PHP
Pergunta
Eu tenho as variáveis do PHP para colocar dentro de um arquivo HTML.Qual é a melhor maneira de executar isso?
//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>
Este método geral é considerado OK, mas o código real, aqui não funciona.Eu uso file_get_contents() ou incluir(), como faço para executar o PHP no arquivo de saída para o conteúdo correto?
Eu deveria estar usando algo como HTML>>>
Solução
O que você está fazendo é bom, e você vai descobrir que a maioria das pessoas usa o mesmo método exato.Eu, pessoalmente, não iria usar o PHP tags curtas (alguns hosts não ativá-lo), mas isso é uma questão de preferência.
Editar: Como por sua editar, parece que você não tem tags curtas habilitado.Verifique sua ini (http://php.net/manual/en/ini.core.php).Mas você realmente não deveriam estar usando tags curtas, porque, como clownbaby menciona, PHP 6 vai depreciar-los.Mesmo se você não se preocupa com o futuro de verificação de código, eles ainda são problemáticos (que é evidente, porque o código não está funcionando).Mude para <?php echo $variable1; ?>
e você vai ficar bem.
Outras dicas
Eu acho que o seu código está bem, apesar de a maioria dos quadros de usá-lo...
sobre o uso de tags curtas, alguns servidores não permitem isso, então aqui está uma solução que eu uso:
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;
- Você não precisa echo
nada aqui.Apenas incluindo o arquivo PHP deve executar o código dentro dele e cuspir interpolados modelo para a página.Enquanto não há tal coisa como retornando um valor de include
, é um recurso raramente utilizado geralmente você pode ignorar.
Como ekhaled disse, você pode necessitar de habilitar tags curtas ou substituí-los sempre suportadas <?php ... ?>
processamento-instrução-sintaxe de estilo.
No entanto, é importante htmlspecialchars
cada seqüência de caracteres de texto quando, incluindo-o no HTML, ou você tem um potencial de XSS brecha de segurança.
<?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>