Вероятно, есть очень простой ответ на этот вопрос, но я хочу быть как можно более подробным, чтобы я не нуждался в разъяснениях.
Я пытаюсь собрать содержимое каждого
<content><div>CONTENT</div></content>
Содержимое необходимо вернуть как обратную ссылку ($1
). И содержимое, и div имеют разные параметры (например, style="color: white;"
). Эти параметры не важны, но, тем не менее, существуют.
Сложность в том, что div может содержать дочерние div. Это не важно, но конфликтует с моим текущим регулярным выражением - преждевременная остановка матча.
Вот пример кода, представьте себе эту копию / вставленную несколько раз и отформатированную по-разному.
<entry>
<title>A general title of a post</title>
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
This is a description of the title. It may <b>contain bold text</b> or <div>even divs</div>, and everything else. It is not quite important to save these tags, but they exist nonetheless.
</div>
</content>
</entry>
В настоящее время я использую два кода регулярных выражений. Один для объявления и один для закрывающих тегов. Это работает, но теперь мне нужно выполнить код на содержание. Итак, я буду использовать preg_replace_callback()
, но я не могу понять, как соединить два, чтобы середина была обратным вызовом.
Декларация:
<content \w+\s*=\s*\".*?\">[\r\n\s]{0,}<div \w+\s*=\s*\".*?\">
Закрытие:
</div>[\r\n\s]{0,}</content>
Мне нужно объединить их с содержимым, возвращаемым в качестве обратного вызова. Я пробовал что-то вроде ([\w\W]{0,})
, которое возвращает абсолютно все, но это совпадение не останавливается на заключительном div.
Итак, я узнал о команде \bFULLWORD\b
и бросил \bdiv\b
на это ... Но у меня не получилось добиться того, чтобы это сработало. Возможно, это не поддерживается PHP? Или я тупой.
Я не знаю.
Пожалуйста, помогите!