За последние 24 часа нас посетили 22833 программиста и 1272 робота. Сейчас ищет 771 программист ...

Узнать находится ли искомый текст внутри ссылки?

Тема в разделе "PHP для новичков", создана пользователем romagromov, 13 июн 2019.

Метки:
  1. romagromov

    romagromov Активный пользователь

    С нами с:
    17 дек 2015
    Сообщения:
    73
    Симпатии:
    0
    Здравствуйте!
    Например есть база данных со статьями.
    Мне нужно заменить некоторые слова и фразы внутри статей на ссылки.
    Как узнать, что например в статье какая-то фраза уже не находится внутри ссылки?
    Спасибо.
     
  2. acso

    acso Активный пользователь

    С нами с:
    15 апр 2010
    Сообщения:
    150
    Симпатии:
    25
    Адрес:
    Одесса
    PHP:
    1. if (strpos($body, 'искомая_фраза' . '</a>') === false) {
    2.   // фраза уже не находится внутри ссылки
    3. }
     
    romagromov нравится это.
  3. romagromov

    romagromov Активный пользователь

    С нами с:
    17 дек 2015
    Сообщения:
    73
    Симпатии:
    0
    А если внутри ссылки кроме искомой разы есть еще какой-то текст?

    Например:
    Ищем "розовый слон"

    имеем

    HTML:
    1. <a href="url">продается розовый слон недорого</a>
    Сработает?
     
  4. acso

    acso Активный пользователь

    С нами с:
    15 апр 2010
    Сообщения:
    150
    Симпатии:
    25
    Адрес:
    Одесса
    Естественно нет)
    Ищете "розовый слон". Затем проверяете, есть ли </a> перед следующим <a...
     
    #4 acso, 14 июн 2019
    Последнее редактирование: 14 июн 2019
  5. romagromov

    romagromov Активный пользователь

    С нами с:
    17 дек 2015
    Сообщения:
    73
    Симпатии:
    0
    Не совсем понял...
     
  6. acso

    acso Активный пользователь

    С нами с:
    15 апр 2010
    Сообщения:
    150
    Симпатии:
    25
    Адрес:
    Одесса
    Находите позицию "розовый слон", находите "<a" после найденной позиции (3-й параметр strpos), ищете "</a>" между розовым слоном и <a
    --- Добавлено ---
    Позиция "розовый слон" начинается с "р"
    --- Добавлено ---
    Я к тому, что к найденному вхождению нужно добавить длину его символов для дальнейшего поиска.
     
  7. romagromov

    romagromov Активный пользователь

    С нами с:
    17 дек 2015
    Сообщения:
    73
    Симпатии:
    0
    Так а если после этой ссылки нет следующего <а ?
    Тут надо искать есть ли </a после слона среди следующих слов...
     
  8. acso

    acso Активный пользователь

    С нами с:
    15 апр 2010
    Сообщения:
    150
    Симпатии:
    25
    Адрес:
    Одесса
    Верно! Если далее нет <a, но есть </a>, тогда "розовый слон" - ссылка)
    --- Добавлено ---
    В общем можно и так:
    1. Ищем "розовый слон". Если нашли, то
    2. Ищем последний <a перед найденной фразой.
    3. Если есть, то проверяем, нет ли </a> между <a и фразой.
    4. Если </a> не найдено, то "розовый слон" - ссылка.
     
  9. romagromov

    romagromov Активный пользователь

    С нами с:
    17 дек 2015
    Сообщения:
    73
    Симпатии:
    0
  10. acso

    acso Активный пользователь

    С нами с:
    15 апр 2010
    Сообщения:
    150
    Симпатии:
    25
    Адрес:
    Одесса
    Да, подойдет. Но!
    В последнем варианте Вы получите гемор в плане пункта 2. Проще таки отталкиваться от найденного слона и того, что после него.
    1. Ищем "розовый слон". Если нашли, то
    2. Ищем первый </a> после найденной фразы:
    2.1. Если есть, то ищем <a после слона и перед найденным </a>. Ссылка = нашли ? нет : да.
    2.2. Иначе не ссылка.