• ベストアンサー

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

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

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

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

  • ベストアンサー
  • 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

  • include先でのinclude元の変数について

    度々お世話になっています。 include先でのinclude元の変数の扱いについて疑問に思ったので質問させて下さい。 include元ファイルtest.php include先ファイルinclude.phpとしてtest.php内の変数をinclude.phpに渡したいと考え以下のコードを書きました。 test.php <?php $test = "いけるかな?"; include "include.php"; ?> include.php <?php echo $test; ?> 結果、$testの値を表示する事が出来なかったのですが、$testの値を表示するためにはどのような記述方法があるのでしょうか? また、このような動作を期待している理由としてはPHP部分とHTMLを分離させたいと考えており、ユーザ定義関数に変数を引数として渡して、出力処理をユーザ定義関数内で行うという事も考えたのですが、include先に値を渡す事が出来れば、非常にわかりやすく分離出来ると考えたからです。 他に、PHP部分とHTML部分をファイル分けするやり方などありましたら教えて頂けますとうれしいです。

    • ベストアンサー
    • PHP
  • PHP 設定ファイルとユーザ定義関数

    ある機能を満たすためのライブラリ(lib.php)を作成しました。 このlib.phpはユーザ定義関数の寄せ集めです。 それぞれのユーザ定義関数では、設定ファイル(config.php)に記述されている共通変数を利用します。 このconfig.phpなのですが、ユーザ定義関数ごとにincludeする以外の方法はあるでしょうか? lib.php function one() { $hensu1... $hensu2... ...処理; } function two() { $hensu1... ...処理; } .... config.php $hensu1 = 1; $hensu2 = 2; ... という構成です。 function one,function twoでconfig.phpの変数を利用したいのですが、lib.phpの先頭でinclude "config.php"をしてもfunctionの中では変数のスコープが有効にはならず、 lib.php function one() { include "config.php"; ...処理; } function two() { include "config.php"; ...処理; } としています。 PHP5を使用しています。 function one() { global $hensu1... } としたらよいのでしょうか? どなたかアドバイスいただけますと幸いです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • 複数ファイルによる共通の外部変数定義について

    初歩的な質問なのですが、今各関数をファイルごとに分けて記述しようとしています。 ここで詰まっているのでできればご教授お願いします ファイル構成は プログラムファイル main.cpp sub.cpp ヘッダーファイル  myheader.h(main.cppとsub.cpp両方でインクルード) ヘッダーファイルには両方のプログラムファイルで使う変数が定義してあります。 それでmain.cppとsub.cpp両方で同じ変数を使いたいのですがコンパイルエラーが発生してしまいます。 内容はsub.obj側で「i(共通のループカウンタ)はmain.objですでに定義されています」というものです。 とにかく私のやりたいことはヘッダーに外部変数を定義して両方のプログラムファイルで使いたいというものです。 もしかしたらファイルを分けるにも何か設定が必要なのでしょうか? 私はただ[プロジェクト]→[プロジェクトに追加]→[新規作成]でソースファイルを作っているだけなんですが・・・ 上記の状態を回避する方法はあるのでしょうか?

  • 変数の型を定義しなかった場合どうなりますか?

    現在、VBAを使ってプログラミングを行っているところなのですが、 一般的に、プログラムの最初で変数に対してintegerやlongといった型を定義してから使うというように教わりますが、このように型を定義しなくとも使うことが出来ます。もし定義しなかった場合、その変数の型は何に設定されているのでしょうか? では型を定義するメリット及び、せずに使った場合のデメリットは何なのでしょうか? 私が使っているのはVBAですが、他の言語では型を定義しなければ、その変数を使うことが出来ないというようなものもあるのでしょうか?

  • includeしたファイルに変数を持ち込むには?

    hoge.phpでセットした変数を、そのあとにincludeした別ファイルに持ち込むことは出来るのでしょうか? 以下のような処理がしたいと思っているのですが、この状態でhoge.phpを実行すると$a=NULLとして処理されてしまいます。 inc.php  <?php    if ($a=="値") {     //TRUE処理    } else {     //FALSE処理    }  ?> hoge.php  <?php   $a = "値";   include "./inc.php";  ?>

    • 締切済み
    • PHP
  • PHPのファイルを表示できない

    現在PHPとApacheを用いてPukiwikiを構築しようと思っています。 PHP,Apacheをインストールしphp.iniとhttpd.confの設定をし、ApacheのhtdocsのフォルダにPukiwikiを入れてみたのですが、WebでPukiwiki内のphpファイルを見ようとするとファイルの保存画面が出てきてしまいうまくいきません。 どこかのファイルの設定をいじれば解決できるのでしょうか? ちなみにWindowsXP、PHP-5.2.1、Apache2.2.4を使用しています。 宜しくお願いします。

  • 変数の共有について

    お世話になります。 PHPにてDBや外部ファイルを使用せずにメモリ上だけで全ての接続ユーザーにて参照・更新可能な変数は定義可能なのでしょうか?そのようなものがあったらどのように定義すればいいのか教えて下さい。又、不可能であればどのような代替案にて同じようなことが可能なのかご教授下さい。宜しくお願いします。 以上

    • ベストアンサー
    • PHP
  • 外部ファイルでの変数設定について

    下記外部ファイル[conf.php]に書きました変数(?)で index.phpに <?= TITLE ?> は読み込みますが こちらは $log-id = "$log-id"; 読見込めませんでした。 アドバイスいただけると幸いです。 ------------------------ index.php ------------------------ <?php require("conf.php"); ?> <title><?= TITLE ?></title> <? $log-id = "$log-id"; virtual ('./cgi-bin/count.cgi?LOG=$log-id&MODE=n'); ?> ------------------------ conf.php ------------------------ <?php $log-id = "log-id"; // サービス名 define("TITLE", "サービス名.jp"); ?> ------------------------ お忙しいと存じますがよろしくお願いします。

    • 締切済み
    • PHP
  • 定義、設定、参照されている変数をリスト化したい

    質問させて頂きます。 C言語で書かれたソース(約100ファイル)で使われている膨大な変数情報をリスト化したく、最適なツールが無いか探しています。 やりたい事は変数名の抽出、定義モジュール・値が設定されるモジュール・参照されるモジュールの抽出です。 このような作業が出来るツールやソフトがあるとは思うのですが、見つける事が出来ず困っています。 エクセルのVBAで上記機能を持つマクロを作成したのですが、信頼性に少し疑問があります。 信頼性があるもので、このようなツールやソフトをご存知なら教えて頂けないでしょうか? よろしくお願いいたします。

  • ヘッダーファイルについて

    //DMusic7Ex.h あるプログラムを解析しています。 //コンパイラ設定 //多重定義防止 #pragma once //ファイルインクルード #include <dmusicc.h> #include <dmusici.h> //型定義 typedef IDirectMusicPerformance* LPDIRECTMUSICPERFORMANCE; typedef IDirectMusic* LPDIRECTMUSIC; typedef IDirectMusicLoader* LPDIRECTMUSICLOADER; typedef IDirectMusicSegment* LPDIRECTMUSICSEGMENT; //関数プロトタイプ 1・DMusic7Ex.cppを作らず他の関数で、このヘッダーファイルをインクルードする手法は一般的なのか? 2・なぜ関数プロトタイプを記述しないで、このタイプ宣言を他のファイルで使用するのは一般的なのか?

専門家に質問してみよう