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

削除された内容 追加された内容
Ef3 (トーク | 投稿記録)
→‎コメント: PHPのコメントには3種類あります。
タグ: 2017年版ソースエディター
Ef3 (トーク | 投稿記録)
→‎HTMLの生成: ウェブサーバ上(たとえばapacheなど)あるいはコマンドラインから php にスクリプトを与え実行すると、HTMLに埋込まれた <?php から ?>のPHPの疑似タグの間のコードがPHPインタープリターに解釈され、地のHTMLに展開されます。
タグ: 2017年版ソースエディター
1 行
== テキストHTML入力生成 ==
webウェブサーバ上(たとえばapacheなど)あるいはコマンドラインから php て、PHPでテキクリプ入力したい場合、例を与ば下記のように実行すると、HTMLにPHPを組みむことまれた <code><?php</code> から <code>?></code>のPHPの疑似タグの間のコードがPHPインタープリターなり解釈され、地のHTMLに展開されます。
;[https://paiza.io/projects/Qfl2J1yiog9zVWbAT-PUBA?language=php hello.php]:<syntaxhighlight lang=php>
 
<!DOCTYPE html>
;コード例
<syntaxhighlighthtml lang="PHPja">
<head>
<html>
<meta charset="utf-8"><html>
<head>
<title>サンプル123こんにちは</title>
</head>
<body><?php
 
echo "Hello World!", "<br>";
<body>
echo "こんにちは", "<br>";
 
?></body>
<?php
print "Hello World!<br />";
print "こんにちは<br />";
?>
 
</body>
</html>
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=html5>
 
<!DOCTYPE html>
;結果
<html lang="ja">
<pre>
<head>
Hello World!
<meta charset="utf-8"><html>
こんにちは
<title>こんにちは</title>
</pre>
</head>
 
<body>Hello World!<br>こんにちは<br></body>
;解説
</html>
PHPは <code><?php</code> と <code>?></code> の間のコードを処理します。
 
print 関数で、文字列を書けます。正確にいうと、print関数は、PHPの生成したhtmlに、引数にしている文字列を代入する関数です。(echoも同様。)
 
 
なお、改行をするにはタグ <nowiki><br /></nowiki> が必要です。
 
もし文字列の文末でも、この改行タグ <nowiki><br /></nowiki> が無いと、標示の結果は文字を改行せずに次の文字を表示してしまいます。
 
 
つまり、
<syntaxhighlight lang="PHP">
<?php
print "Hello World!";
print "こんにちは";
?>
</syntaxhighlight>
: echo コマンドは、echo コマンドと似ていますが、2つ以上のパラメーターを取れるところが違います。
だと、
 
== htmlとechoコマンドの関係 ==
Hello World!こんにちは
さて、htmlでも文字列を書けるので、phpのecho 関数の文字列表示とは、どういう関係になっているのでしょうか?
という、一続きの出力になってしまう。
 
;[https://paiza.io/projects/g7vgu7WSRHltbBvJVgr_ow?language=php hello2.php]:<syntaxhighlight lang=php>
 
<!DOCTYPE html>
 
<html lang="ja">
さて、webブラウザで、上記のローカルホストのページを見に行きましょう。
<head>
 
<meta charset="utf-8"><html>
webアドレスの末尾に「.php」とついているかもしれませんが、しかし、webブラウザが見ているのは実は html ファイルです。
<title>こんにちは こんにちは</title>
 
</head>
サーバー側で既にhtmlファイルに変換されています。
<body>
 
ここは、phpタグの外です。<br><?php
ブラウザのソースコード閲覧機能を使ってソースコードを見ても
echo "ここからphpタグ内側", "<br>";
<syntaxhighlight lang="PHP">
echo "Hello World!", "<br>";
<html>
echo "こんにちは", "<br>";
<head>
?>phpタグを脱出。
<title>サンプル123</title>
</headbody>
</html>
 
;実行結果:<syntaxhighlight lang=html5>
<body>
<!DOCTYPE html>
 
<html lang="ja">
Hello World!<br />こんにちは<br />
<head>
</body>
<meta charset="utf-8"><html>
<title>こんにちは こんにちは</title>
</head>
<body>
ここは、phpタグの外です。<br>ここからphpタグ内側<br>Hello World!<br>こんにちは<br>phpタグを脱出。
</body>
</html>
</syntaxhighlight>
というhtmlファイルのソースコードが表示されるだけです。
 
よくみると、サーバー側のPHPコードとは、微妙に内容が違います。
 
 
ブラウザ側のコードは、サーバー側のソースコードから <code><?php</code> と <code>?></code> のタグの除去、およびその内側のPHPコードの命令群(print など)が除去された結果になっています。
 
ブラウザの「ファイル」>「名前をつけてページを保存」の機能を使って保存されるファイルも同様に、たとえファイル名に.phpとついていても、webブラウザで保存されるのは変換されたhtmlファイルです。
 
つまり、webブラウザで表示されるソースコードと、サーバー側のソースコードとは、たといもし同じファイル名であっても、実はコードが異なります。(もっとも、通常ブラウザ側のファイル名はtitleタグで命名されている名称なので、サーバー側のファイル名とは異なるのが通常であるが。)
 
== html部分とprint関数の関係 ==
さて、htmlでも文字列を書けるので、phpのprint 関数の文字列表示とは、どういう関係になっているのでしょうか?
 
論より証拠、実際に下記コードのphpプログラムを書いてアップロードしてみて、webブラウザで閲覧してみて確かめましょう。
 
<pre>
<html>
<head>
<title>サンプル123</title>
</head>
 
<body>
ここは、phpタグの外です。<br />
<?php
print "ここからphpタグ内側<br />";
print "Hello World!<br />";
print "こんにちは<br />";
?>
phpタグを脱出。
</body>
</html>
</pre>
画面部分の表示結果は、下記のようになります
 
;結果
<pre>
ここは、phpタグの外です。
ここからphpタグ内側
Hello World!
こんにちは
phpタグを脱出。
</pre>
 
です。
 
== 確認方法 ==
PHPを使ってwebサーバのプログラムを作りたい場合、確認方法は、いくつかあります。
 
まず、webブラウザを使って、実際にアクセスしてみる方法です。もしアナタが最終的に作成したいのがwebサーバであるなら、実際にwebブラウザで確認することも必要です。
 
ですが、Firefox では、PHP用のエラーログなどを見ることができません。Firefox の Developer Edition で見ることのできるログ画面は、これは HTML およびJavaScript のエラーログおよび警告ログなどです。なお、Developer Edition でない通常版の Firefox では、そもそもログを見ることが不可能か、もし仮に出来る方法があるとしても困難です。
 
ともかく、PHPのプログラムを作る場合は、PHP用のエラーログを見るためにコンソール端末でも動作を確認しましょう。
 
== コメント ==