Регулярное выражение: игнорировать, если есть HTML-тег - PullRequest
0 голосов
/ 03 августа 2011

У меня есть шаблон регулярного выражения:

\(\s*\'\s*(.*?)\s*\'\)

Этот шаблон означает получение любого текста между ('TEXT').

Возникла проблема: текст может содержать теги HTML.

Итак, я хочу шаблон.Если он не обнаружил теги HTML, получите текст нормально, но если он обнаружил теги HTML, шаблон получит текст между тегами.


Пример:

Еслитекст

('foo foo text here')

шаблон получает:

foo foo text здесь


И если текст:

('<div class='test'> foo foo text here </div>')

шаблон получает

foo foo текст здесь

Таким образом, шаблон игнорирует теги HTML (если они есть) и захватывает текст.

Ответы [ 2 ]

4 голосов
/ 03 августа 2011

Вы можете позвонить strip_tags() внутри вашего preg_match().Это превратится:

('<div class='test'> foo foo text here </div>')

В:

( 'foo foo text here' )

Тогда ваше регулярное выражение, как вы его разработали, удалит паренсы.

preg_match("/\(\s*\'\s*(.*?)\s*\'\)/", strip_tags($yourstring), $matches);
0 голосов
/ 03 августа 2011

Я считаю, что это также работает:

>\s*(.*?)\s*</|\(\s*\'(?!<)\s*(.*?)\s*\'\)

Хотя он выполняет захват в две разные группы захвата.

По крайней мере это может быть другой вариант: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...