У меня есть XML в строку, как это:Как использовать переменные в preg_replace в шаблоне?
<a:b>
<a:c></a:c>
<a:c></a:c>
</a:b>
, и я хотел бы, чтобы удалить все данные внутри пространства имен «а».
Конечно, это можно сделать так:
/<\ba\b:.*?>.*?<\/\ba\b:.*?>/
Но в данном случае результата:
<a:c></a:c>
</a:b>
, потому что первый закрывающий тег для пространства имен «а» на самом деле является дочерним элементом. Таким образом, это рекурсивно будет жить «внутри моей строки».
Так что идея у меня были использовать переменный в шаблоне таким же образом, как вы можете использовать его в замене:
/<(\ba\b:.*?)>.*?<\/$1>/
Это не рабочий раствор используется только для представления идеи реализации.
Вся ваша помощь, идеи, ... очень приветствуются. Спасибо за ваш ответ заранее.
Не следует использовать регулярное выражение для этого использовать XML-анализатор. – nickb
Это одна из причин не использовать регулярные выражения с HTML/XML. Используйте парсер, http://stackoverflow.com/questions/3577641/how-do-you-parse-and-process-html-xml-in-php. – chris85
OK! Я могу это сделать, но идея заключается не в использовании парсера XML ... –