2015-06-24 6 views
1

У меня есть HTML-код, хранящийся в базе данных MySQL, который я переношу на новую установку WordPress из Joomla. Мне нужно удалить текст подписи внизу каждой страницы.Преждевременная группа захвата PHP regex

Пример HTML:

<a href="some/link">link 1</a><p>some really long description</p><a href="another/link">link 2</a>CAPTION TEXT HERE[/caption] 

Я использую PHP скрипт для запроса базы данных и сделать сопоставление регулярных выражений.

Моя регулярное выражение до сих пор:

/(<\/a>)(.*?)(\[\/caption\])/ 

Мне нужно удалить 2-ой заголовок группы (Подписи ЗДЕСЬ) целиком, так что в сущности замены групп 1,2 и 3 с группами 1 и 3. Группа 2 может содержат любой буквенно-цифровой или специальный символ.

Проблема Я бегу в том, что захват группы 1 согласования закрытия тега привязки для связи 1 и продолжается до [/caption]

Что происходит есть:

</a><p>some really long description</p><a href="another/link">link 2</a>CAPTION TEXT HERE[/caption] 

заменяется:

<a href="some/link">link 1</a>[/caption] 

когда то, что мне действительно нужно:

<a href="some/link">link 1</a><p>some really long description</p><a href="another/link">link 2</a>[/caption] 

Заранее спасибо!

ответ

2

Мужчина это не включать > в согласованный текст

(<\/a>)([^>]*?)(\[\/caption\]) 

Demo

+0

работает хорошо, спасибо дружище! – btl

+0

Рад помочь. Не забудьте принять ответ :) – splash58