• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHP コードを文字列として出力する方法)

PHPコードを文字列として出力する方法

このQ&Aのポイント
  • PHPのコードを文字列として出力する方法について知りたいです。ダブルクォーテーションや関数などを使用せずに、直接文字列として出力する方法を教えてください。
  • ダブルクォーテーションや関数を使用せずに、PHPコードを文字列として出力する方法を教えてください。連想配列のキーの囲み文字はシングルクォーテーションです。
  • PHPのコードを文字列として出力する方法について教えてください。ダブルクォーテーションや関数を使用せずに実現する方法を知りたいです。連想配列のキーの囲み文字はシングルクォーテーションです。

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

  • ベストアンサー
  • ky072
  • ベストアンサー率60% (85/140)
回答No.3

かなり無理矢理ですが、 自分自身のファイルを読むという方法はいかがでしょう。 ─ <?php $a['huga'] = 2; $b['hoge'] = 3; $c = $a['huga'] * $b['hoge']; $str = abc(__LINE__); echo $str . "\n"; function abc($ln){  $file = fopen(__FILE__, 'r');  $str = '';  for($n=1; !feof($file) && $n<$ln; $n++){   $line = trim(fgets($file));   if( 0 < strlen($line) ){ $str = $line; }  }  fclose($file);  return $str; } ?> ─ abc() は自分自身のファイルを読み、 引数で指定した行番号の直前の行を表示します。 呼び出す際、現在の行番号 __LINE__ を使って 目的の行を指示します。 対象のコードが複数行になる場合には、 もう少し複雑な処理が必要になります。

susan-styl
質問者

お礼

ky072様 ご回答ありがとうございます! この、自分自身にアクセスするというのが 僕、個人的に目からウロコです こんなこと出来るんですね!!

その他の回答 (2)

  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.2

無理だと思います。  abc($c = $a['huga'] * $b['hoge'] ); の実行順序としては括弧の中の処理が優先されて行われますので、  $c = $a['huga'] * $b['hoge'];  abc($c); と等しいことになります。 括弧の中を処理させないためには、括弧の中身を予め文字列にしておく必要がありますが、そうすると質問者さんの希望する式自体には手を入れないという条件を満たさなくなってしまいます。

susan-styl
質問者

お礼

t_ohta様 ご回答ありがとうございます! やはり無理ですか、便利なPHPなので もしかしたらと思いましたが

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

ご提示のfunction abc($str){・・・的な処理は無理がありますね たんにエスケープしたくないというだけならこんな感じ <?PHP $a['huga'] = 2; $b['hoge'] = 3; $str=<<<'eof' $c = $a['huga'] * $b["hoge"] ; eof; print $str; eval($str); print $c; ?>

susan-styl
質問者

お礼

yambejp様 ご回答ありがとうございます! やはり無理なんですね サンプルソースありがとうございます!