Поиск строки, разделенной тегами. (регулярные выражения, php, xml)
Задача, заполнить шаблон docx, заменяя переменные значениями. В xml файле документа слово может быть разделено в разные теги <w:r><w:t>. Тэг <w:t> - непосредственно отображаемый текст, <w:r> текст с форматированием. Соответственно требуется найти строку, которая может быть в разных тегах, но внутри одного <w:p>, абзаца. Вот часть xml:
<w:p w:rsidR="00AD1848" w:rsidRDefault="00AD1848" w:rsidP="00AD1848">
<w:pPr>
<w:pStyle w:val="aa"/>
<w:jc w:val="right"/>
<w:rPr><w:sz w:val="20"/><w:szCs w:val="20"/></w:rPr>
</w:pPr>
<w:r w:rsidRPr="009C3CA4">
<w:rPr>
<w:sz w:val="20"/><w:szCs w:val="20"/>
</w:rPr>
<w:t xml:space="preserve"> VALUE</w:t>
</w:r>
<w:r>
<w:rPr><w:sz w:val="20"/><w:szCs w:val="20"/></w:rPr>
<w:t xml:space="preserve">1 </w:t>
</w:r>
</w:p>
Регулярка <w:r[>\s].*?<\/w:r> ищет все <w:r>. Но как найти подстроку, которая в смежных тегах описана - непонятно. =о(
Вот в данном коде какую регулярку использовать, чтобы найти xml соответствующий VALUE1, т.е. отрезок xml для дальнейшей замены значением:
VALUE</w:t>
</w:r>
<w:r>
<w:rPr><w:sz w:val="20"/><w:szCs w:val="20"/></w:rPr>
<w:t xml:space="preserve">1
Может и нет решения в регулярках, тогда буду думать дальше.