php初心者です。

echo "<td><td colspan=2 align=center><input type=submit name=submit value=\"申込\">・・・・
と「PHP5であなたもウェブアプリが作れる」という書籍にのっていたのですが、素人ながら
echo "<td><td colsapan=\"2\" align=\"center\"><input type=\"submit\" name=\"submit\" value=\"申込\">
なるような気がするのですが。
どなたか詳しく教えてください。
文字列について重要なことを理解してない気がします。
よろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:2008/01/24 07:43:38
  • 終了:2008/01/31 07:45:02

回答(3件)

id:lifehacks No.1

lifehacks回答回数12ベストアンサー獲得回数02008/01/24 08:11:23

ポイント20pt

PHPからブラウザに渡されるHTMLが前者の場合には

....

後者の場合には

....

になります。いずれも大抵のブラウザは解釈し同じように表示できるはずです。XHTML形式で書く場合には属性値を引用符で囲む必要があります。

id:yohsinn

ふむ、ありがとうございました。

2008/01/24 09:06:05
id:tezcello No.2

tezcello回答回数457ベストアンサー獲得回数682008/01/24 08:50:41

ポイント30pt

質問者さんの記述の方が正確でしょうね。

詳しくは

http://openlab.ring.gr.jp/k16/htmllint/explain.html#quote-attrib...


二重引用符(")で括った文字列は、変数などを展開(置換)してくれます。

$abc = '123';

$str = "mojiretu$abc";

である場合、$str の内容は、mojiretu123 になります。

単引用符(') では完全に文字として扱うので、

$abc = '123';

$str = 'mojiretu$abc';

である場合、$str の内容は、mojiretu$abc になります。

僕は、\ が邪魔な感じがするので、

echo '<input type=submit name=submit value="申込">';

の様に書くようにしています。

文字列として日本語を使う場合にエラーになったり(Shift-JIS は第2バイトに \ と同じコードを含む文字がある)

二重引用符だとPHPが文字列解釈時に常に展開できる文字列が無いかをチェックするので、負荷が高くなる

があるので、文字列は極力単引用符で括るようにしています。


実際には、Shift-JIS では殆ど記述しないのであまり関係ないし、展開できる文字列のチェックもそれ程時間がかかるものではないらしいですが。

本に書かれている事も絶対ではなく、前提などの説明を省略したりしているものも多数あるということですね。

そのサンプルは、一応動作はするでしょうからまだマシな方です。

誤字脱字で文法エラーや、そもそもアルゴリズムが間違っているもの、どこかから拾ってくる時に関係の無い部分まで選択してしまって無意味な部分を含んでいるもの など色々なものがあります。

(もちろんネット上の情報もそうです。むしろネット上の方が酷いかも)

単純に写すだけではなく、チャンと理解して書くのが必要なんですね。

id:yohsinn

うっうっ・・・こんなくだらない質問にこんなに丁寧に教えてくださいまして本当にありがとうございました。

この文章にはあなたの人柄にじみ出ています。

2008/01/24 09:05:17
id:adu No.3

adu回答回数8ベストアンサー獲得回数12008/01/24 08:55:29

ポイント30pt

PHPの構文としてはどちらも正しいです。

書籍の例にて「"」が省略されているのは

HTMLのルールにて属性の値に記号(※1)を含まなければ「"」(※2)が必要ないからです。

省略はできますが、習慣として「"」は必ずつけるようにしたほうが良いそうです。

※1.ハイフン、ピリオド、アンダースコア、コロンを除く。

※2.または「'」

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません