質問
含まれるHTMLファイル内に配置するPHP変数があります。これを実行する最良の方法は何ですか?
//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()を使用しますか?includeファイル内でPHPを実行して正しい内容を出力するにはどうすればよいですか?
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 ... ?>
処理命令スタイルの構文に置き換える必要があるかもしれません。
ただし、HTMLに含める場合はすべてのテキスト文字列をhtmlspecialchars
することが重要です。そうしないと、潜在的な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>