Как получить ссылку активации

Тема в разделе "Регулярные выражения", создана пользователем Jaarg, 11 июл 2009.

Статус темы:
Закрыта.
Модераторы: xpert13
  1. Jaarg

    Jaarg

    Регистр.:
    18 авг 2008
    Сообщения:
    503
    Симпатии:
    97
    Через веб интерфейс захожу на почту яндекса, туда падает письмо с подтв регистрации, в нем есть ссылка вида

    http://site.ru/reg.php?value=20475077561234757822

    как можно выдернуть данную ссылку, учитывая, что последние цифры меняются при каждой регистрации?
    HTML:
    <div id="content" class="plain">
              <p>Вы зарегистрировались на сайте <a target="_blank" href="http://site.ru/" onClick="r('\/r?url=http%3A%2F%2Fsite.ru%2F&amp;ids=2040000000043665875&amp;fs=inbox&amp;counter=1&amp;d=id36224900');">http://site.ru/</a>. Ваши реквизиты:<br>
                  <br>
                Логин: naqop<br>
                Пароль: wihie<br>
                <br>
                Для подтверждения регистрации пройдите по этой ссылке:<br>
                <a target="_blank" href="http://site.ru/reg.php?value=20475077561234757822" onClick="r('\/r?url=http%3A%2F%2Fsite.ru%2Freg.php%3Fvalue%3D20475077561234757822&amp;ids=2040000000043665875&amp;fs=inbox&amp;counter=1&amp;d=id34920677');">http://site.ru/reg.php?value=20475077561234757822</a><br>
              </p>
            </div>
     
  2. ConstNW

    ConstNW Постоялец

    Регистр.:
    30 июн 2007
    Сообщения:
    132
    Симпатии:
    39
    Регуляркой например:
    Код:
    href="(.+?value=.+?)"
    
     
    Jaarg нравится это.
  3. Jaarg

    Jaarg

    Регистр.:
    18 авг 2008
    Сообщения:
    503
    Симпатии:
    97
    а чуть подробнее? как это будет выглядеть в виде когда :)
     
  4. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    890
    Симпатии:
    562
    Скроее всего
    PHP:
    preg_match('#href="(http://site.ru/reg.php\?value=\d*?)"#'$e$r);
    $r[1]-тут будет ссылка
     
     
    Jaarg нравится это.
  5. ConstNW

    ConstNW Постоялец

    Регистр.:
    30 июн 2007
    Сообщения:
    132
    Симпатии:
    39
    KillDead, ты забыл точки эскейпнуть и модификаторы ни к чему.
    PHP:
    preg_match('/href="(.+?value=.+?)"/'$e$r);
    $r[1]-тут будет ссылка
     
    Jaarg нравится это.
  6. andrnag

    andrnag

    Регистр.:
    26 мар 2008
    Сообщения:
    350
    Симпатии:
    125
    Считаю, что вариант KillDead'а лучше, так как более строгий — вытащит только нужный url.

    Jaarg, заэкранировать точки можно таким образом:
    PHP:
    preg_match('#href="(http://site\.ru/reg\.php\?value=\d*?)"#'$e$r);
    $r[1]-тут будет ссылка  
    иначе, на месте точки может оказаться любой символ и в $r[1] придет неверная строка.
     
    Jaarg нравится это.
  7. Jaarg

    Jaarg

    Регистр.:
    18 авг 2008
    Сообщения:
    503
    Симпатии:
    97
    Благодарю :)
    В итоге остановился на варианте
    preg_match('#href="(http://site\.ru/reg\.php\?value=\d*?)"#', $e, $r);

    + основательно затупить мне помог ХуманЭмулятор, который упорно отказывался сохранять страницу с яндекса ;)
     
  8. whiplash

    whiplash Создатель

    Регистр.:
    18 фев 2009
    Сообщения:
    20
    Симпатии:
    0
    вообще для таких задач рекомендую прогу бесплатную The Regex Coach.
    попробуйте, вещь супер удобная для написания регекспов
     
  9. Jaarg

    Jaarg

    Регистр.:
    18 авг 2008
    Сообщения:
    503
    Симпатии:
    97
    да, спасибо, я уже использую ее и RegexBuddy (есть на форуме). просто сначала не понял принцип работ программ )
     
  10. asdsad

    asdsad Создатель

    Регистр.:
    4 окт 2008
    Сообщения:
    28
    Симпатии:
    1
    The Regex Coach.
     
Статус темы:
Закрыта.