Задать вопрос
cyberia
@cyberia
Веб-разработчик, плавно перехожу в мобильные разра

Regexp: негативная ретроспективная проверка на принадлежность тегу

Столкнулся с проблемой, необходимо обертывать в ссылки некоторые фразы в документе. Написал регклярку, но вот беда —не могу обработать исключение, когда фраза уже обернута в ссылку.

<?php
$pattern = '#(?<!")('.$phrase.')(?!</a>)(?!</h1>)(?!</h2>)#iu';
$content = preg_replace($pattern, '<a href="'.$link.'" class=«sph»>$1</a>', $content);
?>

Я добавил опережающие проверки, но проблема в том, что если нужной фразы есть еще слова, то проверки не срабатывают. Например фраза из одного слова «Оne»,

<a href="/test/">One</a>

в таком контексте обрабатывается нормально, а в этом случае получаю ссылку в ссылке:

<a href="/test/">One two</a>

Подскажите, как все-таки проверить нет принадлежит ли текст ссылке?
  • Вопрос задан
  • 3802 просмотра
Подписаться 2 Оценить Комментировать
Ответ пользователя Kindman К ответам на вопрос (4)
Kindman
@Kindman
Можно контент разбить (preg_split) на фрагменты по разделителю "<a\s.*?", и потом обработать каждый отдельный элемент разбиения, а в конце, все во-едино склеить.
Ответ написан