0

私は設定エディタを書いています。fopenとfgetsを含むファイルを1行ずつ読み込んでいます。文字列から配列のキーと値を取得したい。私は正規表現に精通していないので、私は尋ねています。

設定ファイルの例:

$conf['something'] = 'value';
$conf['other_thing']['another_key'] = 3000;

$ conf配列はシステム内のスーパーオブジェクトであり、初期化されたクラスも含めて多くの追加データを保持しているため、ループできません...

4

5 に答える 5

2

私はこのようにsmthを行います:

// get config file as a variable
require_once('config_file.php');

// get keys
$keys = array_keys($conf);

// get config file as a variable
$values = array_values($conf);
于 2012-11-23T14:24:23.130 に答える
1

あなたの質問への直接の答えではありませんが、あなたが書いたように「私は設定エディタを書いています」。次に、この構成ファイルも書き留めると思います。したがって、エディターが$conf機能している間、configを配列に保持すると仮定すると、PHPコードではなくJSONとしてダンプします。

file_put_contents('config.json', json_encode($conf));

必要に応じて読み返します

$conf = json_decode( file_get_contents('config.json') );
于 2012-11-23T14:24:27.997 に答える
0

これはphp配列であるため、直接ループして必要なキーと値のペアを取得できます。それ以外の場合は、phpの関数array_keysを使用して$ conf配列からすべてのキーをフェッチし、array_valuesを使用して配列値を取得できます。

またはその他

構成エディターを作成する場合は、iniファイルを使用してみてください。phpは構成ファイルの作成と使用を適切にサポートしています。この関数を参照してください。parse_ini_fileこれは、キーと値のペアが多すぎる場合に構成ファイルを作成するための標準的な方法です。

于 2012-11-23T14:29:45.173 に答える
0

\$conf\['(.*?)']\s+=\s+'(.*?)';これがあなたのパターンです。キーはグループ1にあり、値はグループ2にあります。

$[および]特殊文字であるため、それらをエスケープする必要があります。\s+空白文字を1回以上意味します。

于 2012-11-23T14:20:42.243 に答える
0

これがあなたの正規表現です:

\$conf(\[('.*')\])+\s?=\s?(.*);

最初の一致はあなたの鍵であり、最後の一致はあなたの価値です

于 2012-11-23T14:23:34.143 に答える