Поиск строки, разделенной тегами. (регулярные выражения, 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

Может и нет решения в регулярках, тогда буду думать дальше.


Ответы (0 шт):