Здравствуйте! Например есть база данных со статьями. Мне нужно заменить некоторые слова и фразы внутри статей на ссылки. Как узнать, что например в статье какая-то фраза уже не находится внутри ссылки? Спасибо.
PHP: if (strpos($body, 'искомая_фраза' . '</a>') === false) { // фраза уже не находится внутри ссылки }
А если внутри ссылки кроме искомой разы есть еще какой-то текст? Например: Ищем "розовый слон" имеем HTML: <a href="url">продается розовый слон недорого</a> Сработает?
Находите позицию "розовый слон", находите "<a" после найденной позиции (3-й параметр strpos), ищете "</a>" между розовым слоном и <a --- Добавлено --- Позиция "розовый слон" начинается с "р" --- Добавлено --- Я к тому, что к найденному вхождению нужно добавить длину его символов для дальнейшего поиска.
Так а если после этой ссылки нет следующего <а ? Тут надо искать есть ли </a после слона среди следующих слов...
Верно! Если далее нет <a, но есть </a>, тогда "розовый слон" - ссылка) --- Добавлено --- В общем можно и так: 1. Ищем "розовый слон". Если нашли, то 2. Ищем последний <a перед найденной фразой. 3. Если есть, то проверяем, нет ли </a> между <a и фразой. 4. Если </a> не найдено, то "розовый слон" - ссылка.
Вот последний вариант вроде по логике более понятен. Ведь подойдет для всех 3-х случаев, верно? розовый слон купить розовый слон купить розовый слон недорого
Да, подойдет. Но! В последнем варианте Вы получите гемор в плане пункта 2. Проще таки отталкиваться от найденного слона и того, что после него. 1. Ищем "розовый слон". Если нашли, то 2. Ищем первый </a> после найденной фразы: 2.1. Если есть, то ищем <a после слона и перед найденным </a>. Ссылка = нашли ? нет : да. 2.2. Иначе не ссылка.