「PHP/入門/テキスト表示とコメント」の版間の差分

削除された内容 追加された内容
Ef3 (トーク | 投稿記録)
→‎HTMLの生成: ウェブサーバ上(たとえばapacheなど)あるいはコマンドラインから php にスクリプトを与え実行すると、HTMLに埋込まれた <?php から ?>のPHPの疑似タグの間のコードがPHPインタープリターに解釈され、地のHTMLに展開されます。
タグ: 2017年版ソースエディター
Ef3 (トーク | 投稿記録)
HTMLとレンダリング結果を併記;→‎シンプルなループ: PHPは、ただ単純にHTMLに文字列を埋め込めるだけでなく、ループで繰返し構造をHTMLに展開できます。…TABLE要素を使った表組みなどの複合的な構造も、このようにHTMLとPHPのコードを編み込むようにコード化します。 WordPressのテーマなどで、より複雑なPHPの(DOMとはまた違った)ドキュメント構造のデザインワークを見ることができます。 このように、PHPはテンプレート記述言語としての特徴を強く持っており、類似のものには ePerl や eRuby のようなスクリプト言語のテンプレート記述拡張がありますが、最初からテンプレート記述言語として設計されているスクリプト言語は、PHP以外に普及例は見当たりません。
タグ: 2017年版ソースエディター
26 行
: echo コマンドは、echo コマンドと似ていますが、2つ以上のパラメーターを取れるところが違います。
 
== htmlとHTMLにechoコマンドの関係で文字列を埋込む ==
PHPでは、動的に文字列をHTMLをに埋込むことができます。
さて、htmlでも文字列を書けるので、phpのecho 関数の文字列表示とは、どういう関係になっているのでしょうか?
埋込まれたPHPのコードがどこに展開されるか見てみましょう。
 
;[https://paiza.io/projects/g7vgu7WSRHltbBvJVgr_ow?language=php hello2.php]:<syntaxhighlight lang=php line>
<!DOCTYPE html>
<html lang="ja">
44 ⟶ 45行目:
</body>
</html>
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=html5>
<!DOCTYPE html>
56 ⟶ 58行目:
</html>
</syntaxhighlight>
;レンダリング結果
<dd>
<div style="background-color:#F8F9FA; border: 1px solid #eee; Xmargin-left:1rem">
ここは、phpタグの外です。<br>ここからphpタグ内側<br>Hello World!<br>こんにちは<br>phpタグを脱出。
</div>
</dd>
== シンプルなループ ==
PHPは、ただ単純にHTMLに文字列を埋め込めるだけでなく、ループで繰返し構造をHTMLに展開できます。
 
;[https://paiza.io/projects/OdhG5vAzhZgCSDkdcQcNhg?language=php loop.php]:<syntaxhighlight lang=php line highlight="9-11">
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>シンプルなループ</title>
</head>
<body>
<ul>
<?php foreach(range(1, 10) as $i) { ?>
<li><?= $i * $i ?></li>
<?php } ?>
</ul>
</body>
</html>
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=html5 line highlight="9-18">
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>シンプルなループ</title>
</head>
<body>
<ul>
<li>1</li>
<li>4</li>
<li>9</li>
<li>16</li>
<li>25</li>
<li>36</li>
<li>49</li>
<li>64</li>
<li>81</li>
<li>100</li>
</ul>
</body>
</html>
</syntaxhighlight>
;レンダリング結果
<dd>
<div style="background-color:#F8F9FA; border: 1px solid #eee; Xmargin-left:1rem">
<ul>
<li>1</li>
<li>4</li>
<li>9</li>
<li>16</li>
<li>25</li>
<li>36</li>
<li>49</li>
<li>64</li>
<li>81</li>
<li>100</li>
</ul>
</div>
</dd>
:;ループ開始:<syntaxhighlight lang=php line start=9>
<?php foreach(range(1, 10) as $i) { ?>
</syntaxhighlight>
:: <code>foreach()</code>は繰返し構文で、<code>range(1, 10)</code>は 1 から 10 の数列を返します。そしてこれが、変数 <var>$i</var> に順に入り繰返します。
:: ループ文の開始の <code>{</code> が閉じられていないことに注意してください。
:;ループの中:<syntaxhighlight lang=php line start=10>
<li><?= $i * $i ?></li>
</syntaxhighlight>
::<code><?php ... ?></code>の外の繰返しは、PHPのコード'''ではなく'''HTMLのコードが丸ごと繰り返されます。
:::この場合は、I要素が量産されます。
::量産されるI要素の内容にPHPのコードがあり変数を含む式が書かれています。
:: <code><?= 引数列 ?></code> は、<code><?php echo 引数列 ?></code> の短縮形です。
:: echo コマンドは、 ’,’(カンマ)で区切って複数の式を続けて表示することができます。
::: これにたいし、print コマンドは、単一の式しか受付けらません。
:;ループ終了:<syntaxhighlight lang=php line start=11>
<?php } ?>
</syntaxhighlight>
:: 9行目の <code>{</code>は、ここで閉じられています。
 
TABLE要素を使った表組みなどの複合的な構造も、このようにHTMLとPHPのコードが出たり入ったりしながら、編み込むようにコード化します。
 
WordPressのテーマなどで、より複雑なPHPの(DOMとはまた違った)ドキュメント構造のデザインワークを見ることができます。
 
このように、PHPはテンプレート記述言語としての特徴を強く持っており、類似のものには ePerl や eRuby のようなスクリプト言語のテンプレート記述拡張がありますが、最初からテンプレート記述言語として設計されているスクリプト言語は、PHP以外に普及例は見当たりません。
 
== コメント ==