ブロックに配列にデータを渡す必要がありますが、どうすればいいですか?正規表現を使用する必要がありますか?私のスクリプトは、私が望むようにそれを分けることができないので、私にエラーを与えます。誰にもアイデアはありますか?文字列を多次元配列(正規表現)に構文解析する方法
データ:
~0
11111111
~1
222222222
~2
3333333333
~end
~0
aaaaaaaaaaa
~1
bbbbbbbbbb
~2
cccccccccc
~3
ddddddddddd
~end
~0
yyyyyyyyyyy
xxxxxxxx
ffffffffff
~1
rrrrrrrrrrrr
~end
私はこのようにそれを必要とする:
Array (
[0] => Array
(
[0] => 11111111
[1] => 222222222
[2] => 3333333333
)
),
[1] => Array
(
[0] => aaaaaaaaaaa
[1] => bbbbbbbbbb
[2] => cccccccccc
[3] => ddddddddddd
)
),
[2] => Array
(
[0] => yyyyyyyyyyy
xxxxxxxx
ffffffffff
[1] => rrrrrrrrrrrr
)
),
)
私のコード(失敗):ここで
$texto = "~0
11111111
~1
222222222
~2
3333333333
~end
~0
aaaaaaaaaaa
~1
bbbbbbbbbb
~2
cccccccccc
~3
ddddddddddd
~end
~0
yyyyyyyyyyy
xxxxxxxx
ffffffffff
~1
rrrrrrrrrrrr
~end";
preg_match_all("/(?ms)^~0.*?~end/", $texto, $coincidencias);
foreach ($coincidencias[0] as $bloque){
preg_match_all("/\~.*\n/", $bloque, $sub_bloques);
$hola[] = $sub_bloques;
}
私は私が正しく要件を理解全く確信していないが、あなたは確認してくださいだろうか? "caracter〜で始まらない空でない行は配列内の1つのエントリでなければなりません" – Dragos
"〜0"から "〜終わり"までの@Dragosは1つのブロック(今は3つのブロック)であり、 〜0、〜1、〜2〜配列の位置(テキストのみ) –
私はむしろ2つのステップで作業したいと思っています: 1. '$ level1 = explode( '〜end'、$ data)' 2. 'foreach($ @yyyyyyyyyyy (0サブタイトルとしてレベル1){$ matches = preg_match_all( '^(\ w *)$'、$ subItem)} ' – Dragos