За последние 24 часа нас посетили 19012 программистов и 1613 роботов. Сейчас ищет 701 программист ...

RegExp вложенные теги

Тема в разделе "Регулярные выражения", создана пользователем adober, 27 сен 2010.

  1. adober

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

    С нами с:
    27 сен 2010
    Сообщения:
    1
    Симпатии:
    0
    Здравствуйте. Имеется постоянно обновляемая страница новостей, требуется некоторые ключевые слова заменять на ссылку. Написать регулярное выражение для замены "foobar" на "<a href='http://'>foobar</a>" труда не составляет, не получается учесть вариант когда foobar находится внутри ссылки "<a href='http://'>bla bla foobar bla</a>". Сначала пробовал использовать негативные проверки справа и слева:
    "/(?<!<a[^<>]).*(foobar).*<\/a>/"
    понял что для этого требуется знать фиксированное количество символов для проверки, затем начал заменять ключевое слово в два этапа:
    1. $content = preg_replace('/foobar/u','<a hre='http://'>foobar</a>',$content); //заменяем все foobar на ссылки
    2. $content = preg_replace('/(<a[^>]+>.?(?<!<\/a>))<a[^>]+>(foobar)<\/a>/','foobar',$content); //заменяем все вложенные ссылки с foobar на foobar

    Но ничего не получается. Помогите, пожалуйста, найти ошибку.
     
  2. Gromo

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

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    с потолка поступило предложение делать замену в три этапа:
    1. найти все foobar внутри ссылок и заменить их на foo______bar
    2. найти все foobar и заменить их на ссылку
    3. str_replace foo______bar => foobar