REDLINE MAGAZINE | PHP ヒアドキュメントREDLINE MAGAZINEトップページへ

すべてのエントリを見る

PHP ヒアドキュメント

使った事あるけど実は細かい決まり事なんかをちゃんと把握してなかったので、今更だけどおさらいメモ。

ヒアドキュメントとは

PHP内にまとまった文章を直接記述し利用できるようにする方法。ヒアドキュメントの中はすべて文字列として扱われ、変数は展開される。

PHP: 文字列 - Manual

ヒアドキュメントの使い方

print <<< EOF
1行目
2行目
EOF;

上の「EOF」って書いた部分は、一番上の文字列と最後の文字列が同じであれば何でもいい。(これをIDって呼ぶんだって)開始IDと終端IDにはそれぞれ注意点がある。以下、PHPスクリプト講座:文字列の扱い -- そふぃのphp入門より引用。

開始IDの注意点
開始IDの前後に全角空白があるとIDはその空白も含めたものになる
開始IDの後ろにタブと半角スペースは入れられない。
<<< とIDの間にはタブと半角スペースを入れられる。
開始IDの後ろにはコメントもつけられない。
終端IDの注意点
終端IDは必ず行頭に置かなくてはならない。
終端IDの行には「;」(セミコロン)以外置いてはならない。
タブやスペースでのインデントもセミコロンの前後に空白を置くのもだめ
コメントつけるのも却下

IDは英数字とアンダーバーのみ。但し数字が先頭にきてはダメ(CSSと一緒って覚える)。マニュアルの方には英数字とアンダーバーのみって書いてあるけど、上のそふぃのphp入門には日本語つまり平仮名や漢字なんかもID名に使えます。って書いてある。(とりあえず「英数字が無難」って覚える。)

例えば。

こういう風にechoで書いてるのが・・・

echo "<ul>\n";
echo "<li><a href=\"" . $url . "\">" . $hoge . "</a></li>\n";
echo "</ul>\n";

スッキリする。

print <<< EOF
<ul>
<li><a href="$url">$hoge</a></li>
</ul>
EOF;

ヒアドキュメントは変数への代入もできる

$str =  <<< EOF
1行目
2行目
EOF;

//出力する時
print $str;

出力する時の「print $str;」は「echo $str;」でも別に構わない。

その他もろもろ覚書

  • 変数を波括弧{ }で括ると確実にこれは変数です!と認識してもらえる。
  • ヒアドキュメントの中で配列変数は波括弧{ }で囲わないと使えない。
  • 関数はヒアドキュメント内で使えないからどっか外で一旦変数に入れてやる。
  • ヒアドキュメントの中で定数は置き換えられない(そのままの文字列)

参考にしたサイト

<< 正規表現 勉強メモ | 「お知らせ」が「更新情報」に派生した(2) >>

トラックバック

このエントリーのトラックバックURL:
http://redline.hippy.jp/cgi/mt/mt-tb.cgi/220

PHP ヒアドキュメント へのトラックバック一覧

» PHPのヒアドキュメント 送信元 日々是作譜
ヒアドキュメントとは、複数行の文章を直接記述し利用できるようにする方法で、ヒアドキュメントの中はすべて文字列として扱われ、変数は展開されます。
Trackback time : 2009.05.12

このページの一番上へ

その他の情報など

最近のコメント

PHP オブジェクト指向の勉強
  • Red - 2010.01.08
  • hogepage - 2010.01.21
  • Red - 2010.01.22
  • - 2011.11.27
  • houseiii - 2011.11.27
Fireworks トリミング画像を一括書出 CS4編
  • Iper - 2009.06.27
  • Red - 2009.06.27
  • mala - 2011.11.17
  • Red - 2011.11.18
jQueryでボックスを上下左右中央に簡単配置
overflow を使用したボックス背景のこと
  • - 2007.12.13
  • Red - 2007.12.13
  • - 2007.12.13
  • Red - 2007.12.13
  • hj - 2011.09.23
IE6 → 透過PNG+overflow=混ぜるな危険(追記有)

メッセージを送る

こちらのメッセージ送信フォームは閉鎖させて頂きました。
御用の方は新しい方のブログ にコメント頂くか、 連絡用のフォーム もありますので、そちらからご連絡ください。