За последние 24 часа нас посетили 16358 программистов и 1586 роботов. Сейчас ищут 1545 программистов ...

Поиск тега внутри класса и добавления аттрибута

Тема в разделе "Регулярные выражения", создана пользователем vah-smile, 12 мар 2023.

  1. vah-smile

    vah-smile Активный пользователь

    С нами с:
    13 апр 2009
    Сообщения:
    162
    Симпатии:
    1
    Адрес:
    Украина, Ровно
    Добрый день.
    Извините, в регулярках я не силен.
    Суть вопроса: есть вот такой HTML код
    HTML:
    1. <p>
    2.     <a href="#">link</a>
    3. </p>
    4.  
    5. <p class="fancybox">
    6.     <a href="#">link with fancybox</a>
    7. </p>
    Вопрос: как для ссылки .fancybox a задать аттрибут data-fancybox?
    HTML:
    1. <p>
    2.     <a href="#">link</a>
    3. </p>
    4.  
    5. <p class="fancybox">
    6.     <a href="#" data-fancybox>link with fancybox</a>
    7. </p>
    При использовании правила ниже - у меня заменяются все ссылки, а нужно только там, где есть определенный класс у родителя
    PHP:
    1. $content = preg_replace('/(<a\b[^><]*)>/i', '$1 data-fancybox>', $content);
     
  2. antoniii

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

    С нами с:
    16 мар 2022
    Сообщения:
    419
    Симпатии:
    71
    Используй JQuery:
    $ ("a.fancybox") .addClass("data-fancybox") ;
     
  3. dantemgs

    dantemgs Новичок

    С нами с:
    24 дек 2022
    Сообщения:
    47
    Симпатии:
    9
    Вроде работает:
    PHP:
    1. $content = preg_replace('/
    2.    (<p[^><]*class=".*?fancybox.*?"[^><]*?>    # тег <p> c .fancybox
    3.    [^><]*?                                    # то, что между ними
    4.    <a\b[^><]*)>                               # тег <a>
    5.    /ix', '$1 data-fancybox>', $content);  
    Думаю, что есть решение изящнее.
     
    vah-smile нравится это.
  4. vah-smile

    vah-smile Активный пользователь

    С нами с:
    13 апр 2009
    Сообщения:
    162
    Симпатии:
    1
    Адрес:
    Украина, Ровно
    Да. Помогло. Огромное СПАСИБО!