• ベストアンサー

Nowdocの機能をphp5.2で使いたい

php5.3からヒアドキュメント内部で変数が展開されないNowdocが使えるようになりましたが、 これと同様のことをphp5.2でできないでしょうか。 下のコードで、ヒアドキュメント内の内容を触らずに(\$hogeなどとエスケープせずに) 変数$hogeを展開させない方法を教えてください。 $source = <<<HERE <?php $hoge = "hogehoge"; ?> HERE; echo $source;

  • PHP
  • 回答数1
  • ありがとう数0

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

5.2以前にはそような機能はないですね。 たしょう強引ですが、以下のどちらかで処理できないことはないです (1)シングルクォーテーションでくくる。 <?php $source = ' <?php $hoge = "hogehoge"; ?> '; echo nl2br(htmlspecialchars($source)); ?> ただし、当然文中にシングルクォーテーションはいれられません (2)外部ファイルにわけてとりこむ //hoge.txt <?php $hoge = "hogehoge"; ?> //hoge.pxp $source = file_get_contents("hoge.txt"); echo nl2br(htmlspecialchars($source)); ?>

関連するQ&A

  • PHPの不等式に変数を使う

    いつもお世話になります PHPの不等式に変数を使うことは出来ますでしょうか? 例えば $a = 'huga'; $b = 'huga'; if($a == $b){ echo 'hoge'; } 結果 hoge 右辺と左辺の間、不等式を変数にしたいです $a = 'huga'; $b = 'huga'; $c = '==' if($a $c $b){ echo 'hoge'; } 期待する結果 hoge 上のソースはもちろんパースエラーとなり成り立ちません 型変換や考えられるキーワードで検索したのですが、出てきませんでした 下のように strpos()、strstr()等で$cの内容を解析して、条件分岐すれば期待の結果が出せるのは分かります if( strpos($c,'==') !== false && $a == $b){ echo 'hoge'; } (上記で成り立つのは分かります) 教えていただきたい内容は、「不等式を変数で成り立たせる方法」です $c= '=='; PHPに詳しい方お教えいただけると嬉しいです

    • ベストアンサー
    • PHP
  • ヒアドキュメントと、htmlspecialcharsの違いを教えて下さい。

    PHPのセキュリティを強化しようと勉強しているのですが わからないことがあります。 セキュリティの本には、変数の出力の場合は、 htmlspecialcharsで書くべきと載っていますが、 これまでヒアドキュメントで書いていた部分も、 htmlspecialcharsに直す必要があるのでしょうか? ■ヒアドキュメント echo<<<EOD $hogehoge EOD; ■htmlspecialchars echo htmlspecialchars($hogehoge,ENT_QUOTES,'UTF-8'); この二つの違いと、 どちらがセキュリティとして良いかのかを教えて下さい。

    • ベストアンサー
    • PHP
  • PHPからバッチ実行

    exec('hogehoge.bat'); PHPから上記コマンドでバッチを実行すると hogehoge.bat ECHO hoge > hogehoge.log DIR \\Server1\hoge*.* > C:\hoge\hoge.log hogehoge.logにはキチンとhogeと書いてありますが hoge.logは作成されますが真っ白なままです。 NET USE F: \\Server1 ドライブに割り当てて試してみましたがダメでした。 なにかいい方法はございませんでしょうか? Win XP Apache_2.0.59 php-4.4.4

    • ベストアンサー
    • PHP
  • PHPの高速化

    HTMLとphpがごちゃごちゃになるとややこしいので $HTML .= "<div>hogehoge</div>" のような、HTMLソースコードをすべて、いったん変数に格納し、最終的に echo $HTML; とする手法で、作成していったのですが、 HTMLを変数に埋め込んだせいか、PHPの処理が完全に終わるまで HTMLが表示されなくなってしまい、 表示に時間がかかるようになってしまいました。 待ち時間を感じさせぬよう、HTMLを先に表示させ、 そのあとで、データベースに接続や、繰り返し処理のデータを 表示させるには、現在のすべてのHTMLソースを変数に入れるという 設計を改めるしかないのでしょうか。 または、別の方法で、 HTML記述部分を優先的に処理させる方法はないでしょうか。

    • ベストアンサー
    • PHP
  • GETで?の後ろのnameをなしにしたい

    【PHP】 GETでパラメータを取得したいです。 通常、 hoge.php?q=hogehoge ↓ echo $_GET["q"]; ↓ hogehoge などとなりますよね? でも、 hoge.php?hogehoge ↓ echo $_GET["●●"]; ↓ hogehoge 出力、みたいにしたいのですが.. hoge.php?hogehoge&mogemoge とか hoge.php?hogehoge&a=mogemoge とかできたら尚良いです。 どうしたらいいのでしょうか? ●●部分を空白にする、とか? 仕様的に無理なんでしょうか? ご教示頂けましたら幸いです。 どうぞよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 画面にそのままを出力したい

    初歩的な質問ですが、調べても出てこないので質問させてください PHPで記述したものをそのまま出力するにはどうしたらいいでしょうか Perlでいうところの print <<"任意の文字"; この中をそのまま出力 任意の文字 こんなことができる記述方法を探しています ようは、PHPでechoで書くと""でくくると内部にある"を全て\でエスケープしなくてはなりませんし、だからといって''にすると今度は'を\でエスケープしなくてはならないと思うのですが、いちいちくくったものと同じ記号のエスケープを考えなくていい方法を探しています。 ただし、内部で$など変数を使えるような方法が必要です。 何かいい方法を教えてください。

    • ベストアンサー
    • PHP
  • PHPで配列の検索方法

    PHPで下のような2次元配列があったとします。(りんご=a、みかん=bのような意味です。CSVからデータを2次元配列に格納したものです。) $data[0][0]="りんご" , $data[0][1]="a" $data[1][0]="みかん" , $data[1][1]="b" $data[2][0]="ばなな" , $data[2][1]="c" $data[3][0]="ぶどう" , $data[3][1]="d" ここで下のような1次元配列$hogeがあったとき $hoge[0]="ばなな" , $hoge[1]="りんご" 新たに1次元配列$hogehogeを用意して、2次元配列の中から"りんご"や"ばなな"に対応する文字列を探し出して $hogehoge[0]="c" , $hogehoge[1]="a" と、格納したいのですが、やり方がわかりません。 イメージとしまして、 $hoge[0]→($data[0][0]~$data[3][0]の中から探す)→($data[2][0]であるとわかる)→($data[2][0]に対応するのは$data[2][1]だとわかる)→($hogehoge[0]=cと格納) もし分かる方がおられましたらお願いします。

    • ベストアンサー
    • PHP
  • phpでのリンク

    PHP初心者なのですが、教えて下さいm(__)m プルダウンでの選択史を選ぶと次にまた選択史を表示させたいのですが、PHPを勉強したばかりなのでスマートにソースを書くことができません。 ↓のような感じで一応できたのですが、これはおかしいと言われました。 PHPなのになぜ、リンクのところだけがHTMLになっているの?と。 言われてみればそうなのですが、これ以外よく分からなくて…。 色々調べたのですが、上手くいきませんでした。 <A href="data/hoge.php"><? echo ($hoge_data[0]); ?></A><BR> <A href="data/hoge_1.php"><? echo ($hoge_data[1]); ?></A><BR> : : : このおかげで<hoge.php>、<hoge_1.php>…といっぱい必要になってきてしまい…。 何かスマートな方法はありますでしょうか? 宜しくお願い致しますm(__)m

    • ベストアンサー
    • PHP
  • PHPの文字列の比較について

    PHPの文字列の比較について質問です。 $hoge = "文字列¥¥テスト"; $foo = "文字列¥テスト"; とあった場合 var_dump($hoge == $foo); とすると trueがかえってきます。 バイト列としてみた場合 エスケープしたバックスラッシュと 構文上、エスケープの必要のないバックスラッシュの文字列上の 比較ですがこれが、なぜかtrueがかえってきます。 これは、当然の結果なのでしょうか? PHPは文字列を比較するさい、バイト列としての文字列のならびより アウトプットされる結果を比較しているということでしょうか? それとも、単純に上記変数$hogeと$fooはバスックスラッシュの使用方法は 関係なく同一のものとして扱われるのでしょうか?

    • 締切済み
    • PHP
  • javascriptとphpの変数のやり取り

    ある該当ページ(mtの検索結果ページ)が拡張子をphpにできず、 <script src=hogehoge.php></script>でphpファイルを読み込んで、 実行したいと思います。 phpを使用している理由はある変数を取得したいのですが、 今回は関係ないので割愛します。 ■以下ソース ・該当ページ(mt-search.cgi) <html> <head> <title>hoge</title> <script type="text/javascript" src="/hogehoge.php"></script> </head> <body> <script> document.write("<p>"+str+"</p>"); </script> </body> </html> ・phpファイル(hogehoge.php) <?php if(test == test){ $str = "成功" }else{ $str = "失敗"; } ?> <script type="text/javascript"> <!-- var str= "<?php echo $str?>"; --> </script> このようにしているのですが、 うまく出力されません。 php側の出力はうまくいっているようなのですが、 ブラウザ側の方でちゃんと変数がわたっていないようです。 画面は真っ白です。 ご教授お願いいたします。

専門家に質問してみよう