PHPでHTMLを出力する楽な方法、WebデザイナーのPHP

PHPを使えば時間帯で表示を変えたりとかログインしたユーザーの名前などを表示させることが出来ますが、それにはPHPでHTMLを出力しなくてはなりません。javascriptでも出来ますがPHPでしたらサーバーがプログラムを処理してくれるので基本ブラウザ別に動作が異なる事も無くとても楽です。

で、PHPでHTMLを出力するにはechoを使います。
echoの使い方は「’」シングルクオートまたはダブルクオート「”」で囲みます、また最後には必ず「;」セミコロンを付けます。以下のサンプルではどちらも同じ表示になります。

<?php
echo '<strong>新規サイトがオープン!</strong>'; 
?> 
<?php
echo "<strong>新規サイトがオープン!</strong>";
?>

ではこの文章にリンクをして表示するとします。
「’」シングルクオートで囲んだ場合

<?php
echo '<a href="http://blog.tasdesign.jp/">TAS designがオープン!</a>'; 
?> 

問題なく表示されます、ではダブルクオート「”」で囲むと

<?php
echo "<a href="http://blog.tasdesign.jp/">TAS designがオープン!</a>";
?> 

間違った記述になり動きません。
「Parse error: syntax error, unexpected T_STRING, expecting 」などと表示されると思います。
なぜならHTMLで使われている「”」がPHPにはここでechoは終わりになり以下の文字がエラーになるからです。
ではどうするかと言えばエスケープ文字「\」バックスラッシュまたは「¥」マークを「”」の前に付けます。

<?php
echo "<a href=\"http://blog.tasdesign.jp/\">TAS designがオープン!</a>";
?> 

これで問題なく表示されます。

ちょっとメンドクサイですね、じゃあ常に「’」で囲ったほうが良いんじゃないかと思うかもしれませんがそうもいきません。「’」で囲んだ場合は変数が値に展開されません。

たとえば以下のようにしたい場合「”」で囲む必要があります、「’」で囲んだらリンク先は「$Link_URL」になってしまします。

変数$Link_URLをリンク先のアドレスに代入

<?php
$Link_URL = "http://blog.tasdesign.jp/";
echo "<a href=\"$Link_URL\">TAS designがオープン!</a>";
?> 

さて、これくらい短いHTMLなら良いのですがもっと長いHTMLを出力したい時には楽な方法があり、「ヒアドキュメント」という方法を利用します。

print<<<EOF
表示したいHTML
EOF;

&lt;?php
$Link_URL = &quot;http://blog.tasdesign.jp/&quot;;
print&lt;&lt;&lt;EOF
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
&lt;title&gt;PHPの動産サンプル001&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;a href=&quot;$Link_URL&quot;&gt;TAS designがオープン!&lt;/a&gt;&quot;
&lt;/body&gt;
&lt;/html&gt;
EOF;
?&gt; 

print<<<EOF から EOF; までの間に表示したいHTMLを入れるとそのまま出力してくれますし、変数は展開されますので、長いHTMLを出力したい時にひたすら「\」を入れる必要は無くなります。

EOFの部分は自分の好きな文字にすることが出来ます。
ただしPHPで定義された命令や予約語などは利用できません。

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です