0
ファイルの内容を多次元配列に分割するのに少し助けが必要です。ファイルの内容のファイルを多次元配列に分割する
サンプル:
--[DEATH KNIGHT]--
--|Blood|--
--{Single}--
/* MACRO CODE FOR SINGLE TARGET */
--{MULTI}--
/* MACRO CODE FOR MULTIPLE TARGETS */
--|Frost|--
/* MACRO CODE FOR SINGLE TARGET */
--{MULTI}--
/* MACRO CODE FOR MULTIPLE TARGETS */
--{Single}--
--[DRUID]--
--|Guardian|--
--{Single}--
/* MACRO CODE FOR SINGLE TARGET */
--{Multi}--
/* MACRO CODE FOR MULTIPLE TARGETS */
私はこのファイルを読み込む必要があり、以下の構造を持つ配列に分割:
array(
'DEATHKNIGHT' => array(
'Blood' => array(
'Single' = 'Single Target Macro Code',
'Multi' = 'Multiple Target Macro Code'
),
'Frost' => array(
'Single' = 'Single Target Macro Code',
'Multi' = 'Multiple Target Macro Code'
)
),
'DRUID' => array(
'Guardian' => array(
'Single' = 'Single Target Macro Code',
'Multi' = 'Multiple Target Macro Code'
)
)
私は読むために)(のfile_get_contentsを使用していますファイルの内容を文字列に変換します。私は私の定義された配列キーを引き出すためにpreg_match_all()を使用しています。以下は、私が使用しています正規表現です:
$class_regex = '/(?:-{2})(?:\[)(?:[A-Z][\w]+)(?:[\s][A-Z][\w]+)?(?:\])(?:-{2})/';
$spec_regex = '/(?:-{2})(?:\|)(?:[A-Z][\w]+)(?:[\s][A-Z][\w]+)?(?:\|)(?:-{2})/i';
$target_regex = '/(?:-{2})(?:\{)(?:[A-Z][\w]+)(?:[\s][\(][\d][\D][\)])?(?:\})(?:-{2})/i';
私は正常にキーを抜くことができ、私は特定の要素にファイルを区切ることができますが、私の配列を作成しようとしたとき、私は苦労しています。どんな助けでも大歓迎です。前もって感謝します。
'file_get_contents()'で全体を読むのではなく、 'while($ line = fgets($ file))'で一行ずつ読みます。 – Barmar
あなたのファイルの内容の中で、それらの 'ターゲット'キーは 'Single'と' Multi' static(定数)ですか? – RomanPerekhrest
はい、 'シングル'と 'マルチ'は静的です。他のすべてはそうではありません。 「マクロコード」の長さは異なります。マクロコードごとに異なる量の行が含まれることを意味します。 –