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

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

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

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

Q&A

解決済

1回答

992閲覧

参考書の表示と実際の画面表示が違う

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

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

0グッド

0クリップ

投稿2020/01/23 03:34

編集2020/01/23 04:30

phpの参考書で勉強中です。
windows10、XAMPP for windows 7.3.12を使っています。
以下のphpのプログラムを実行するとご覧の通りになります。
php2では途中に改行タグ<br>を入れて改行はできるようになりました。
しかし、悪い箇所を特定するためにecho $html;を入れて見ました。
$html自体がうまく表示されていません。ここを直せば期待通りの表示に
なると思うのですが、どこが間違っているかわかりません。
それともecho $html;では$html全体
<span class = "{class}">Fried Bean Curd<span>
<span class = "{class}">Oil-Soaked Fish</span>
は表示されないのでしょうか。
よろしくお願いいたします。

// oreilly例2-14の内容 $html = '<span class = "{class}">Fried Bean Curd<span> <span class = "{class}">Oil-Soaked Fish</span>'; print str_replace('{class}',$my_class,$html); //説明は次のようになっています。 $my_classがlunchに設定されている場合、例2-14の出力は次の通りです。 <span class = "lunch">Fried Bean Curd<span> <span class = "lunch">Oil-Soaked Fish</span> str_replace()への3番目の引数として渡された文字列の{class}(str_replace()の最初の引数) の部分が、lunch($my_classの値)に置き換えられます。

php1

1 2<?php 3 $my_class = 'lunch'; 4 5 $html = '<span class = "{class}">Fried Bean Curd<span> 6 <span class = "{class}">Oil-Soaked Fish</span>'; 7 8 print str_replace('{class}',$my_class,$html); 9 10 /* 期待される実行結果 11    <span class = "lunch">Fried Bean Curd<span> 12    <span class = "lunch">Oil-Soaked Fish</span> 13 */ 14 /* 実際の実行結果 15    Fried Bean Curd Oil-Soaked Fish 16 */ 17 18?> 19

php2

1 2<?php 3 $my_class = 'lunch'; 4 5 /*$html = '<span class = "{class}">Fried Bean Curd<span><br> 6 <span class = "{class}">Oil-Soaked Fish</span>'; 7 8 echo $html; 9 10 print str_replace('{class}',$my_class,$html); 11 12 /* 実際の実行結果 13    Fried Bean Curd 14 Oil-Soaked Fish 15 Fried Bean Curd 16 Oil-Soaked Fish 17 */ 18

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

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

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

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

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

date

2020/01/23 03:55

画面に Fried Bean Curd ではなく <span class = "{class}">Fried Bean Curd<span> と出ると思っているのでしょうか?
退会済みユーザー

退会済みユーザー

2020/01/23 03:57

はいそのように思っています。違うのでしょうか。
退会済みユーザー

退会済みユーザー

2020/01/23 03:59

<span class = "lunch">Fried Bean Curd<span>と出ると参考書には書いてありますが、違うのでしょうか。
guest

回答1

0

ベストアンサー

実際の実行結果

画面表示より「ソースを表示」からhtmlを取得して想定通りになってるか確認してください。

いずれにしても、いきなりPHPから動的html作るよりも、固定値などいれて「モック」として静的html作られてからのほうが、確実に進みます。

投稿2020/01/23 03:38

m.ts10806

総合スコア80850

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

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

退会済みユーザー

退会済みユーザー

2020/01/23 03:49

いつも回答をいただきありがとうございます。 回答いただいた内容がむつかしくて、解決できないでいます。 oreillyの初めてのphpで勉強を始めたばかりで、第2章の初めのところに出ているコードです。 読み進めていけない状態です。この参考書は例が載っているのですが、そのままではなかなかうまくいきません。
退会済みユーザー

退会済みユーザー

2020/01/23 03:51

別の参考書を読んでから、よみなおします。
m.ts10806

2020/01/23 03:58

7対応ならPHP技術者認定初級対応のものですね。 私は書籍内容云々関係なく「開発の進め方」をアドバイスしています。 PHPでブラウザから実行する場合、結局あらわれるのはHTMLです。 となると、レイアウトが鍵になるわけですけど、そのレイアウトはPHP通さないとできないわけではないですよね。 動的に、変数などでかわるところは固定で適当な文言に置き換えてもレイアウトは作れます。 これは逆に言うと「画面レイアウトができてないのにPHPから正しい出力はできない」ことを意味します。 モックと言うのは「試作品」とも言いますが、これをhtmlだけで(静的)作っておくことで、PHPから出力するhtmlイメージが固まった状態でPHPに組み込めると言うことになります。 変数やループのところだけ書き換える形ですね。 そこでブラウザ出力して、ブラウザの「ソースを表示」で得られるHTMLとモックのHTML比較し、イメージ通りに出力されるかを確認する。 サーバーサイドの言語からHTML出力する場合は、気にするべきは画面表示そのものではなく、「イメージ通りのHTMLが組上がっているか」です。 その「イメージ通りのHTML」が「モック」となるわけですね。
m.ts10806

2020/01/23 03:59

ちなみに読むなら参考書ではなくPHPマニュアルで機能の仕様確認をしてください。 現在使っている書籍にも随所にPHPマニュアルへのリンクURLがあるはずです。
退会済みユーザー

退会済みユーザー

2020/01/23 04:01

ありがとうございます。頑張ります。
m.ts10806

2020/01/23 04:11

もしブラウザから動作確認していてそこでブラウザの「ソースを表示」して書籍の提示通りであれば「できている」と言えます。 ブラウザなのでhtmlと解釈されればそれはもちろんhtmlとして処理します。 状況からすると書籍はあくまでコマンドで実行したことを想定しているのだと思います。 ※なのでHTMLのこともきちんと把握しておかなければなりません
退会済みユーザー

退会済みユーザー

2020/01/23 04:17

ありがとうございます。とりあえず先に進んでみます。 $my_class = 'lunch';は私が自分で書き込んで実行してみました。
m.ts10806

2020/01/23 04:17

つまり、「実はなにも問題が起きてない」と思ってます。 書籍は「出力結果」を載せていて、質問者さんは「その出力結果をブラウザで見ている」だけではないかと。
m.ts10806

2020/01/23 04:18

いずれにしても、ブラウザで見ているのなら、ブラウザの「ソースを表示」で出力結果を確認するのは必須です。 「なんだかわからないから先に進もう」では今後同じことでずっとつまずいた気になって質問を繰り返すことになります。
退会済みユーザー

退会済みユーザー

2020/01/23 04:40

str_replace()の関数はPHPマニュアルで機能の仕様確認はしています。ほかのstr_replace()関数の使い方は調べて実行してうまく表示されています。 http://localhost/php_oreilly/chap2/2-14.phpのようにして、ブラウザでみているのですが、 「ブラウザの「ソースを表示」で出力結果を確認するのは必須です。」の意味がわからないので、 説明していただけませんか。
m.ts10806

2020/01/23 04:54

既にほぼ書いてるのですけど、ブラウザに表示されるのはあくまでHTMLを解析してレンダリングした結果であり、PHPから出力した情報そのものではないから、です。 「ソースを表示」で確認できるのはレンダリングされてない生文書であるので、PHPから出力した情報そのものが確認できます。 やってみればわかるんですけど、何度も書いてるのになぜやらないんでしょうか。
退会済みユーザー

退会済みユーザー

2020/01/23 05:50

すみません。未熟なもので、おしゃっていることが私には理解できません。 やる気はあるんですが、なにおどうやればいいのか、わからないのです。 勉強していけば分かるようになるのではとも思っていますが,意に添わなくてごめんなさい。
退会済みユーザー

退会済みユーザー

2020/01/23 06:23

google Chromeのデベロッパーツールのことでしょうか。 使い方は不慣れです。こちらも勉強しないといけませんね。 質問の件はFried Bean Curd Oil-Soaked Fishで正常みたいです。お騒がせしてすみませんでした。
退会済みユーザー

退会済みユーザー

2020/01/23 06:27

先に進んでいたら、似たようなコードの書き方があり、$で始まる変数が実際の値に置き換わって表示されていましたが、同じ書き方になっていました。ありがとうございました。
m.ts10806

2020/01/23 06:28

デベロッパツールでなくても 「右クリック」→「ページのソースを表示」で充分です。 デベロッパツールのソースはブラウザ側の整形や調整が入るので「PHPの生の出力内容」を確認したい場合はむしろ不向きです。
退会済みユーザー

退会済みユーザー

2020/01/23 07:07

ありがとうございました。実行画面で「右クリック」→「ページのソースを表示」ですね。 1つ使い方がわかりました。
m.ts10806

2020/01/23 07:12

一応、ブラウザで確認するだけが全てではないので、このことは頭の片隅に置いといてください。 書籍やプログラム関連の記事はほとんどのケースで「PHPから出力される生情報」が記載されます。 「出力結果」とはあくまで生情報であることは忘れては行けません。ブラウザはあくまでレイアウトの確認手段です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問