質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

teratail

teratail(テラテイル)は、プログラミングに特化した日本語Q&Aサイトです。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

5回答

4303閲覧

入れ子??

b1ackc0ffee

総合スコア267

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

teratail

teratail(テラテイル)は、プログラミングに特化した日本語Q&Aサイトです。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2015/06/26 04:15

lang

1<?php require_once '../Encode.php'; ?> 2<!-- Encode.phpをインポート --> 3<!DOCTYPE html> 4<html> 5<head> 6<meta charset="UTF-8" /> 7<title>PHP入門教室</title> 8</head> 9<body> 10<h3>ゲストブック(閲覧)</h3> 11<?php 12$file = @fopen('guest.dat', 'rb') 13 or die('ファイルが開けませんでした。'); 14flock($file, LOCK_SH); 15print('<dl>'); 16// ↓ファイルを行単位で読み込み 17while ($row = fgetcsv($file, 1024, "/t")) { 18?> 19 <dt><?php print(e($row[1])); ?> 20 (<?php print(e($row[0])); ?>) </dt> 21 <dd>メッセージ:<?php print(e($row[2])); ?><hr /></dd> 22<?php 23} 24print('</dl>'); 25flock($file, LOCK_UN); 26fclose($file); 27 ?> 28</body> 29</html>

上のコードなんですが、

22行目と23行目が逆になるか、
18行目が、21行目の後に来る方が自然じゃないですか?
参考書が上のようなコードになっているのですが、これが自然な書き方なのでしょうか。
何か意味があるのでしょうか。

質問の意味が分かりにくくてすみません。
宜しくお願い致します。![イメージ説明]WIDTH:476

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

PHPの分かり難い部分ですよね。
自分も最初は意味不明でした。

簡単な例を提示しますので参考にしてみてください。

1から10までを出力するだけのサンプルです。
いずれも同じように動作します。

lang

1<?php 2 $i = 0; 3 while($i <= 10){ 4?> 5 6<div><?php echo $i++; ?></div> 7 8<?php 9 } 10?>

lang

1<?php 2 $i = 0; 3 while($i <= 10): 4?> 5 6<div><?php echo $i++; ?></div> 7 8<?php 9 endwhile; 10?>

lang

1<?php 2 $i = 0; 3 while($i <= 10){ 4 echo "<div>".$i++."</div>"; 5 } 6?>

3つ目のサンプルが他の言語でもお馴染みの記法ですが、
PHPではコード内にHTMLを直接書けてしまうんですよね。

1番目の記法だとかなり混乱するので、
HTMLを埋め込む場合は2番目の方法の

命令文:
処理
end命令文;

と明示したほうが分かりやすいコードになると思います。
ちなみにif文、for文でも同じことが可能です。

投稿2015/06/26 04:43

編集2015/06/26 05:53
KakeruKaneko

総合スコア115

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

PHP において、PHP タグの外に書いているものは文字列リテラルを echo しているのと変わりありません。

なので、同じような意味で書き換えると次のようになります。
(適当に省略しているので全く同じではありません)

lang

1<?php require_once '../Encode.php'; 2echo "<!-- Encode.phpをインポート -->\n .. 中略 .. <h3>ゲストブック(閲覧)</h3>"; 3$file = @fopen('guest.dat', 'rb') 4 or die('ファイルが開けませんでした。'); 5flock($file, LOCK_SH); 6print('<dl>'); 7// ↓ファイルを行単位で読み込み 8while ($row = fgetcsv($file, 1024, "/t")) { 9 echo "<dt>"; 10 print(e($row[1])); 11 echo "("; 12 print(e($row[0])); 13 echo ") </dt>\n<dd>メッセージ:"; 14 print(e($row[2])); 15 echo "<hr /></dd>"; 16} 17print('</dl>'); 18flock($file, LOCK_UN); 19fclose($file); 20echo "</body>\n</html>\n";

これを見れば、括弧の対応とかが正しいのがわかります。

投稿2015/06/26 06:45

ngyuki

総合スコア4514

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

18行目はphpの開始タグ
22行目はphpの中でwhileのブロックを閉じる処理なので問題無いです

ただ、可読性が悪いので
私ならhtmlと混ぜる場合こう書きます。

lang

1<?php require_once '../Encode.php'; ?> 2<!-- Encode.phpをインポート --> 3<!DOCTYPE html> 4<html> 5<head> 6<meta charset="UTF-8" /> 7<title>PHP入門教室</title> 8</head> 9<body> 10<h3>ゲストブック(閲覧)</h3> 11<?php 12$file = @fopen('guest.dat', 'rb') 13 or die('ファイルが開けませんでした。'); 14flock($file, LOCK_SH); 15?> 16<dl> 17<?php while ($row = fgetcsv($file, 1024, "/t")): ?> 18 <dt><?php print(e($row[1])); ?> 19 (<?php print(e($row[0])); ?>) </dt> 20 <dd>メッセージ:<?php print(e($row[2])); ?><hr /></dd> 21<?php endwhile;?> 22</dl> 23<?php 24flock($file, LOCK_UN); 25fclose($file); 26 ?> 27</body> 28</html>

投稿2015/06/26 04:47

編集2015/06/26 04:48
nanndemoiikara

総合スコア775

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

22行目と23行目が逆にしたり、18行目が、21行目の後に来るとエラーになります。
このコードはPHPで書かれている部分とHTMLの部分が混ざっているためです。

投稿2015/06/26 04:33

orange0190

総合スコア1698

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

lang

119: <dt><?php print(e($row[1])); ?>

↑htmlの<dt>開始タグに続いて<?phpでphpが始まり行内で?>によってphpが終わっている。

lang

120: (<?php print(e($row[0])); ?>) </dt>

↑htmlで”(”を出力してから、<?phpでphpが始まり?>でphpが終わった後に”)</dt>”と閉じ括弧と終了タグを書き出している。

ですので、書き順は間違っていないですよ。

自然かどうかと言われると<dl></dl>がprint()で出力されていたりするので違和感ありますが、エラーになるような書き方ではないです。
逆に18行目が、21行目の後に来るとエラーになります。

ただ、<dd></dd><hr />が入ってるのがちょっと許せない。。。w

投稿2015/06/26 04:49

JunTomizawa

総合スコア248

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問