• ベストアンサー

ファイル中に定義した変数のみ表示したい

いつもお世話になります。 include "../conf.php"; の様に設定ファイルに、ファイルをまたがって使用する変数を 予め定義しておくのは、一般的な手法だと思います。 こういった手法は非常に便利ではあるのですが、ファイル中で定義した 変数のみ一覧で出そうと思うと、設定ファイルにある膨大な変数も含めて 表示されるため、非常に見辛いのです。 こういった悩みを解決する方法をどなたかご存じないでしょうか?

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

  • ベストアンサー
  • taskuni
  • ベストアンサー率71% (49/69)
回答No.1

大幅に書き換えることになるかもしれませんが、 parse_ini_file が使えると思います。 変数をセクションに分けて読み込むことが出来ます。

参考URL:
http://php.s3.to/man/function.parse-ini-file.html
haru1234
質問者

お礼

ご返答ありがとうございます。 やはりファイル中の変数のみ表示することは 既存構造を変化させずに実現するのは難しいということが わかっただけでも収穫でした。 もう5万行ほど作りこんでしまっているスクリプトなので、設定ファイルの書き換えは 不可能だと判断し、自作の関数を作ることで対応することにしました。 よければご参考までに <?php //引数:無し //戻値:無し //呼び出し元のファイル中にある、変数らしき文字列を探しprint_rで表示する function var_dump_local ( ){ $datafile = $_SERVER['SCRIPT_FILENAME']; $fp=fopen ($datafile,"r"); if (!$fp){exit ("cant open file");} $i = 0; while (!feof($fp)){ $row=fgets($fp,4096); $row = eregi_replace("\r\n", "", $row); $row = eregi_replace("\r|\n", "", $row); $str = ""; $bool = preg_match( '/\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/',$row,$str ); if ( empty ( $str[0] ) ){ unset ( $str[0] ); continue; } $result[$i] = $str[0]; //可変変数が処理できる形式に直す $result[$i] = ltrim($result[$i],'$'); $i ++; } fclose($fp); $result = array_unique ($result); foreach ( $result as $line ){ print "$" . $line . " -> "; $var_name = $line; global $$var_name; print_r( $$var_name); print "<br>"; } } ?>

関連するQ&A