プロが教えるわが家の防犯対策術!

MySqlから画像名を取得し、フルパスを変数に代入
$image_path = 'img_blog/' . $image_name;
表示
echo "<img src=\"".$image_path."\">";

例えば、サイズを指定したい時
<img src="img_blog/sample.gif" width="300" height="auto">

echo を使うときはどのように書けばよいのでしょうか?

A 回答 (2件)

echo '<img src="' . $image_path . '" width="300" height="auto">';



echo "<img src=\"" . $image_path . "\" width=\"300\" height=\"auto\">";

echo "<img src=\"{$image_path}\" width=\"300\" height=\"auto\">";

height="auto" の auto は HTML の仕様に存在しません。非負整数だけです。auto は無視されます。

CSS の height は auto を使用できるので、それと混同しています。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
波括弧構文、autoの使用、勉強になりました。
{$image_path}の方が分かりやすいと思いました。
とても分かりやすかったです。

お礼日時:2023/01/09 10:45

まず、最初に。


これは echo の問題ではなく、文字列の問題です。
echoは文字列を出力するだけです。
どんな内容を出力するかは、どんな文字列を作るか、となります。
どんな文字列を作るかは、そのためにはどうすればいいか、ということになります。

まずはマニュアルをよく読みましょう。
https://www.php.net/manual/ja/language.types.str …
特に、シングルクオーテーションによる文字列とダブルクオーテーションによる文字列の違いは重要です。

"<img src=\"".$image_path."\">"
これは
「<img src="」
($image_pathの内容)
「">」
という3つの文字列を .演算子で連結したものです。
<img src="img_blog/sample.gif" width="300" height="auto"> にした、というのは
「<img src="」
($image_pathの内容)
「" width="300" height="auto">」
という3つの文字列を .演算子で連結したい、ということになります。

#1さんの例を借りると
(1) これらの文字列には、ダブルクオーテーション文字列のみで対応しているもの(\n等)は使われていないので、シングルクオーテーション文字列でもそのまま書けます。
シングルクオーテーション文字列の中では、ダブルクオーテーションをエスケープする必要はありません。

'<img src="' . $image_path . '" width="300" height="auto">'

(2) ダブルクオーテーション文字列の中にダブルクオーテーションを書くには、ダブルクオーテーションを\でエスケープします。

"<img src=\"" . $image_path . "\" width=\"300\" height=\"auto\">"

(3) ダブルクオーテーション文字列では、変数の展開ができます。
これを使うと . で連結する必要がなくなります。

"<img src=\"${image_path}\" width=\"300\" height=\"auto\">"


他に spintfを使う等もあります。
https://www.php.net/manual/ja/function.sprintf.php
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
シングルクオーテーションとダブルクオーテーションの文字列の違いの解説はとても分かりやすかったです。
特に、(2)の解説、ダブルクオーテーションを¥でエスケープは勉強になりました。
他に spintfを使う等もありがとうございます。
ベストアンサーは、最初に回答を下さった方にさせて下さい。

お礼日時:2023/01/09 10:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!