有一个带有标签的文件定义了文档的结构。例如:
<!-- begin-block-a-1 -->
Содержимое блока block-a-1
<!-- begin-block-b-1 -->
Содержимое блока block-b-1
<!-- begin-block-c-1 -->
Содержимое блока block-с-1
<!-- end-block-c-1 -->
<!-- begin-block-c-2 -->
Содержимое блока block-с-2
<!-- end-block-c-2 -->
<!-- begin-block-c-3 -->
Содержимое блока block-с-3
<!-- end-block-c-3 -->
<!-- end-block-b-1 -->
<!-- begin-block-b-2 -->
Содержимое блока block-b-2
<!-- end-block-b-2 -->
<!-- begin-block-b-3 -->
Содержимое блока block-b-3
<!-- end-block-b-3 -->
<!-- end-block-a-1 -->
<!-- begin-block-a-2 -->
Content in block block-a-2
<!-- end-block-a-2 -->
是否可以使用正则表达式和 PHP 函数将这样的字符串转换为数组:
array(1) {
["block-a-1"]=>
array(4) {
[0]=>
string(41) "Содержимое блока block-a-1"
["block-b-1"]=>
array(4) {
[0]=>
string(41) "Содержимое блока block-b-1"
["block-c-1"]=>
array(1) {
[0]=>
string(42) "Содержимое блока block-с-1"
}
["block-c-2"]=>
array(1) {
[0]=>
string(42) "Содержимое блока block-с-2"
}
["block-c-3"]=>
array(1) {
[0]=>
string(42) "Содержимое блока block-с-3"
}
}
["block-b-2"]=>
array(1) {
[0]=>
string(41) "Содержимое блока block-b-2"
}
["block-b-3"]=>
array(1) {
[0]=>
string(41) "Содержимое блока block-b-3"
}
}
}
这里,开始标签报告语义块的开始,结束标签报告语义块的结束。
我的问题是编写正确的正则表达式。我这样写:
'~<!-- begin-(.?) -->(.*?)<!-- end-(.?) -->~s'
但在这种情况下,比赛将是:
<!-- begin-block-a-1 -->
Содержимое блока block-a-1
<!-- begin-block-b-1 -->
Содержимое блока block-b-1
<!-- begin-block-c-1 -->
Содержимое блока block-с-1
<!-- end-block-c-1 -->
我需要这个:
<!-- begin-block-a-1 -->
Содержимое блока block-a-1
<!-- begin-block-b-1 -->
Содержимое блокаk block-b-1
<!-- begin-block-c-1 -->
Содержимое блока block-с-1
<!-- end-block-c-1 -->
<!-- begin-block-c-2 -->
Содержимое блока block-с-2
<!-- end-block-c-2 -->
<!-- begin-block-c-3 -->
Содержимое блока block-с-3
<!-- end-block-c-3 -->
<!-- end-block-b-1 -->
<!-- begin-block-b-2 -->
Содержимое блока block-b-2
<!-- end-block-b-2 -->
<!-- begin-block-b-3 -->
Содержимое блока block-b-3
<!-- end-block-b-3 -->
<!-- end-block-a-1 -->
和这个:
<!-- begin-block-a-2 -->
Содержимое блока block-a-2
<!-- end-block-a-2 -->
那些。您需要使用正则表达式获得相同的组。
我得到了这个正则表达式: