0

次のような設定を保存するPHP構成ファイルがあります。

  define("SETTING_1", "");
  define("SETTING_2", "");
  define("SETTING_3", "");

デフォルトでは設定は空ですが、install.php基本的にユーザーに設定を求めるインストーラーファイルがあります。設定ファイルを開き、各設定の定義を見つけて値を挿入するための最良の方法は何ですか?最後に、設定ファイルをディスクに保存する必要があります。

正規表現や単純な文字列検索の使用を避けたい。私は出くわしましたtoken_get_all()、それを使うことは意味がありますか?

4

3 に答える 3

3

token_get_all()文字列からすべての解析トークンを取得するだけなので、実際には役に立ちません。token_get_all()リストした他のメソッドを使用する場合よりも、結果のステートマシンまたはパーサーを作成するために多くの時間を費やします。

これを実現する最も簡単な方法は、次のような既知の一意のプレースホルダーを使用することです。

define("SETTING_1", "{{SETTING_1}}");
define("SETTING_2", "{{SETTING_2}}");
define("SETTING_3", "{{SETTING_3}}");

次に、ファイルを開き、次を使用してこれらのプレースホルダーをすべて実際の値に置き換えますstr_replace()

$file = file_get_contents( "config.php");
$config = str_replace( 
    array( '{{SETTING_1}}', '{{SETTING_2}}', '{{SETTING_3}}'),
    array( $setting1, $setting2, $setting3),
    $file
);
file_put_contents( 'config.php', $config);

必要なのはそれだけです。

于 2012-08-01T00:07:45.253 に答える
0

define()の方法は明確ですか?

本当にPHP形式にする必要がある場合は、var_export()を使用してインクルードしますが、これは完全に安全ではありません...またはINIファイルを使用します。つまり、iniファイルを作成し、PHPで値を書き込みます。

于 2012-08-01T00:04:02.407 に答える
0

ユーザー設定に定数を使用しないでください。それは悪い考えです。配列を作成し、2番目のパラメーター'true'を指定してvar_exportを使用してファイルに保存します。読み取り可能で、配列関数を使用して再生成できます。

于 2012-08-01T00:17:26.823 に答える