重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

ifを使い条件わけしています。
ifの条件に適合しなかった場合(else)表示をさせたいのですが・・・。
表示するものはtableタグを使い整列させていて、<a>によりリンクもはっています。
echoをつければ平気かと思ったのですが、そういうわけでもないし、何行もechoを書くのも・・・。
と思い質問しました。

よろしくおねがいします。

A 回答 (5件)

>echo "<a href="a.html">a</a>";


とやればPHPの中でもリンクを貼れるかと思ったのですが、できませんでした。

 エスケープシークエンスについて調べてみてください。
 文字列は””の間に囲むことは知識としてありますか?
 今回の場合「"<a href="」という部分で文字列が終わりと判断されてしまっています。
 次の文字列は">a</a>"となりエラーが出いると思います。
 間の「a.html」は文字列とみなされていません。

 PHPはHTML文の中に埋め込めるので、基本的にヒアドキュメントは使う必要はありません。

 if(条件)にヒットしたときにHTMLを出力したいなら、

<?php
・・・・
if(条件) {
?>

(そのままHTML文を記述)

<?php
}
?>

 とプログラム部分を終了してしまえばHTMLとして出力されます。
 echoする必要はありません。

 ビューとロジックの分離を考えると本当はifもビューに含めない方が良いのですが、とりあえずPHPの性質を押さえてください。
    • good
    • 0

phpよりの記述方法として私は全ての表示を変数に格納してから、最後にechoとしています。


途中にifなどの条件も楽に入れられると思います。

$html .=
"<a href=\"a.html\">a</a>\n".
"<a href=\"b.html\">b</a>\n".
"<a href=\"c.html\">c</a>\n";

echo $html;

また、処理を入れるつど、変数への格納を終了させないといけなくてめんどいと思われるなら、条件によりますが、以下のように文字列内に条件処理を入れることもできます。

$html .=
($a ? "<a href=\"a.html\">a</a>\n" : "").
($b ? "<a href=\"b.html\">b</a>\n" : "").
($c ? "<a href=\"c.html\">c</a>\n" : "");

echo $html;
    • good
    • 0
この回答へのお礼

遅れてすみません。

一人ひとりお礼をしたいのですが、忙しいためまとめてお礼させていただきます。

PHPタグを1回閉じて、htmlを書き、またphpタグを書きはじめるという方法をとりました。

おかげさまでできるようになりました。


みなさん回答ありがとうございます。

お礼日時:2006/06/03 13:07

#1>…とやればいいのでしょうか?


そうですね。
>HTMLの中にはPHPも書いてあり、そのつど<<<EOTで囲めばいいのでしょうか?
それは、ケースバイケースで、#3さんが言うようにもできますし。
ヒアドキュメント中の変数は文字列中の変数と同様展開されるので、テンプレート的に使うこともできます。
また、ダブルクォートもそのまま使えます。
<?php
$link="a.html";
$link_text="a";
echo <<<EOT
<a href="a.html">a</a>
<a href="$link">$link_text</a>
EOT;
?>
のように書けます。二つめのリンクは同じ意味になります。
    • good
    • 0

>echo "<a href="a.html">a</a>";



コーテーションのなかにコーテーションが入れられない
のはどの言語でも常識のレベルだと思いますが?

echo "<a href=\"a.html\">a</a>";
とするか
echo "<a href='a.html'>a</a>";
としてください。

#1さんもおっしゃってましたが
HTMLをうめこむときには基本はヒアドキュメント
としたほうが可読性があがり、バグがみつけやすく
なります。
ヒアドキュメントには
$html.=<<<eof のような使い方もできるので
非常に使いやすくなっています。
    • good
    • 0

>何行もechoを書くのも・・・


そういう場合には、ヒアドキュメント構文が使えます。
http://jp.php.net/manual/ja/language.types.strin …
    • good
    • 0
この回答へのお礼

すみません。始めたばかりでよくわからないのですが。
echo<<<EOT
HTMLで記述したもの
EOT;
とやればいいのでしょうか?
また、HTMLの中にはPHPも書いてあり、そのつど<<<EOTで囲めばいいのでしょうか?


echo "<a href="a.html">a</a>";
とやればPHPの中でもリンクを貼れるかと思ったのですが、できませんでした。
どうやればいいのでしょうか?

質問多くてすみません・・・・。

お礼日時:2006/05/28 17:15

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