MENU

PHP構文

【PHP】 ヒアドキュメントで$をそのまま出力する

更新日:2020/12/24

 

ヒアドキュメントは便利だけれど、$マークをそのまま出力したいとき困ります。

 

ヒアドキュメントではなくNowdocを使用する

 

PHPにはNowdocという機能があります。

 

これをヒアドキュメントに似ているけれど、別の機能です。

 

ヒアドキュメントは$があると変数として展開してくれます。

 

ヒアドキュメント

 


$t = '太郎';

$s = <<< EOM
僕の名前は$t
EOM;

 

この結果、$sの内容が'僕の名前は太郎'になります。

 

ヒアドキュメントで変数名をそのまま出力したいときは、$をエスケープします。

 

ヒアドキュメント

 


$t = '太郎';

$s = <<< EOM
僕の名前は\$t
EOM;

 

この結果、$sの内容が'僕の名前は$t'になります。

 

しかしNowdocを使用すると、もっと簡単です。

 

Nowdocは<<<の後の識別子をシングルクォートで囲みます。

 

$s = <<< 'EOM'

 

そして、$があってもそのまま出力します。

 

Nowdoc

 


$t = '太郎';

$s = <<< 'EOM'
僕の名前は$t
EOM;

 

この結果、$sの内容が'僕の名前は$t'になります。

僕がNowdocを使った理由

 

このサイトはSIRIUSという静的CMSで作成しているのですが、テンプレートを無理やり編集して、インデックスページ内に無理やりPHPコードを出力させてたりします。

 


$datalist=[];

$datalist[] =  <<< EOM
<div>記事タイトル1</div>
<div>記事内容</div>
EOM;

$datalist[] = <<< EOM
<div>記事タイトル2</div>
<div>記事内容</div>
EOM;

・・・もっと続く

 

で、インデックスが呼ばれたとき数行おきに広告を挿入しています。

 

しかし、次の記事に困ってしまいました。

 

【JavaScript】 変数名の$(ドルマーク)はどんな意味がある?

 

上のタイトルを使用してイメージ的には、次のようなPHPコードを生成します。

 


$datalist[] =  <<< EOM
<div>【JavaScript】 変数名の$(ドルマーク)はどんな意味がある?</div>
<div>記事内容</div>
EOM;

 

$が含まれているため変数とみなされて、上手く生成してくれないのです。

 

最初はタイトルに\$をいれていましたが、一部でそのまま\が表示されてしまうなどトラブルが続出です。

 

Nowdocを知ったときは、本気で感動しました。

まとめ

ヒアドキュメントは便利だけれど、$マークをそのまま出力したいとき困ります。

 

そんなときはNowdocを使ってみましょう。

記事の内容について

 

こんにちはけーちゃんです。
説明するのって難しいですね。


「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。

裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。

そんなときは、ご意見もらえたら嬉しいです。

ご意見はこちら。
https://affi-sapo-sv.com/info.php

【お願い】

お願い

■このページのURL


■このページのタイトル


■リンクタグ