• ベストアンサー

ヒアドキュメント内での変数の扱い

ヒアドキュメント内で変数を入れるとそれ以降の文字が出てきません 半角スペースで変数の後を1つあけてやるとうまく出ますが、表示にも半角スペースが空くので見栄えが良くないので修正したいのですが、どうしたらいいでしょうか。 \を変数の後に入れてみましたが、これでも変数の後は表示されたのですが、\まで表示されてしまいます。 例: $foo = "変数"; print<<<DOC_END 文字$fooあと DOC_END; これだと「あと」が表示されない $foo = "変数"; print<<<DOC_END 文字$foo\あと DOC_END; これだと「文字変数\あと」となる \の代わりに半角スペースを入れると変数とあとの間に半角スペースも表示される

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

公式のドキュメントから記述が見つからなかったけれど 当方のPHP 6(独自ビルド)では <?php $foo = "変数"; print<<<DOC_END 文字${foo}あと DOC_END; ?> で 文字変数あと と表示されました。 #明確な仕様がないのが…

choei
質問者

お礼

早速の回答ありがとうございます。 当方PHP5ですが、教えて頂いた${foo}で書くやり方でうまくいきました {}をここで使えることを知りませんでした。 ありがとうございました。

その他の回答 (1)

  • kyo999
  • ベストアンサー率64% (34/53)
回答No.2

変数$fooが後ろの「あと」とくっついて別の変数(「$fooあと」)とみなされてるのではないでしょうか? 試しに↓のようにしたら $foo = "変数"; $fooあと = "テスト"; print<<<DOC_END 文字$fooあと 行末<br> 次の行$foo $fooあと DOC_END; 表示結果は↓になりました(文字コードUTF-8) 文字テスト 行末 次の行変数 テスト ヒアドキュメントに限らず文字列の処理では、変数の前後が半角スペースなど変数が確実に識別できる場合以外は#1さんのように{}カッコで括られるのが安全です。

choei
質問者

お礼

ありがとうございます。 持っているどのPHPの本もサンプルなどは全て{}でくくってないので{}でくくれることを知りませんでした