Допилить регулярное выражение

Тема в разделе "Как сделать...", создана пользователем KSiG, 1 июл 2015.

  1. KSiG

    KSiG Создатель

    Регистр.:
    16 фев 2015
    Сообщения:
    22
    Симпатии:
    1
    Всем привет.
    Необходима помощь в доработке регулярного выражения на пхп.
    На странице около 100 совпадений.
    Обычно они вот такого вида:
    Код:
    <i class="fa fa-user"></i> <a href="/profile/81431/">oleg</a></nobr>&nbsp;&nbsp;&nbsp;
    Нужно вырезать именно "/profile/81431/"

    Вот что составил, но что-то не работает
    Код:
    preg_match_all("/<i class=\\\"fa fa-user\\\"><\\/i>.*<a href=\\\"(.*?)\\\"/", $url, $matches1);
     
  2. Finnland

    Finnland Создатель

    Заблокирован
    Регистр.:
    22 авг 2014
    Сообщения:
    10
    Симпатии:
    35
    ТАК?

    PHP:
    <?php
    $url 
    '<i class="fa fa-user"></i> <a href="/profile/81431/">oleg</a></nobr>&nbsp;&nbsp;&nbsp;';
    preg_match_all('~<a href="(.*?)">~s'$url$matches1);
    print 
    implode($matches1[1]);
    ?>
     
    Duймовочка нравится это.
  3. KSiG

    KSiG Создатель

    Регистр.:
    16 фев 2015
    Сообщения:
    22
    Симпатии:
    1
    Нет. Я не зря зацепил предыдущий тег fa fa-user. На странице достаточно много ссылок на профили, а мне нужны именно те, которые идут за тегом fa fa-user.
     
    Последнее редактирование: 1 июл 2015
  4. denverkurt

    denverkurt Denve®

    Регистр.:
    23 дек 2013
    Сообщения:
    685
    Симпатии:
    376
  5. KSiG

    KSiG Создатель

    Регистр.:
    16 фев 2015
    Сообщения:
    22
    Симпатии:
    1
    Не знал про это, да и особые подводные камни в любом случае всплыли бы. На C# это делается в разы проще - с помощью htmlagilitypack. Там просто напросто выбираешь xPath, экранируешь некоторые его части и вуаля.
    А так мне уже помогли в чате. Вот такая регулярка получилась
    Код:
    ~<i class="fa fa-user"></i>\s*?<a href="(.*?)">~