Есть файл с метками, который определяет структуру документа. Например:
<!-- 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 сообщает о завершении смыслового блока.
Моя проблема заключается в составлении правильного регулярного выражения. Пишу так:
'~<!-- 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 -->
Т.е. нужно получать одинаковые группы регулярным выражением.
У меня получалась такое регулярное выражение:
'~<!-- begin-(.*?) -->(.*?)<!-- end-(\1) -->~sg'
Виртуальный выделенный сервер (VDS) становится отличным выбором
Не совсем понимаю как отправлять почту из PHP скриптаВезде разрозненная информация, кто то пишет установить sendmail, кто то пишет что хватит PHPmailer