Простое регулярное выражение

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

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

    dmsoh

    Регистр.:
    27 янв 2007
    Сообщения:
    192
    Симпатии:
    42
    Составил регулярное выражение для текста (изображен на картинке), но ничего не возвращает. Цель получить содержимое тега a. Подскажите, что не так написал.

    PHP:
    preg_match_all('/<div\s+class=[\'"]main[\'"]>+\n+\t{6}+\n+\t{7}+<a\s+href=[\'"](.*)[\'"]>/'$html$result);
     

    Вложения:

    • rrrr.jpg
      rrrr.jpg
      Размер файла:
      6,3 КБ
      Просмотров:
      31
  2. RolCom

    RolCom

    Регистр.:
    12 мар 2008
    Сообщения:
    351
    Симпатии:
    108
    На картинке у тебя символы \r изображены, а в регулярке их нет.
     
  3. dmsoh

    dmsoh

    Регистр.:
    27 янв 2007
    Сообщения:
    192
    Симпатии:
    42
    Но вот так тоже не хочет работать

    PHP:
    preg_match_all('/<div\s+class=[\'"]main[\'"]>+\r+\n+\t{6}+\r+\n+\t{7}+<a\s+href=[\'"](.*)[\'"]>/'$html$result);
     
  4. RolCom

    RolCom

    Регистр.:
    12 мар 2008
    Сообщения:
    351
    Симпатии:
    108
    Поставь \s+ и не парься, тебе принципиально чтобы табуляций было именно это количество? И зачем столько плюсов в регулярке.
     
  5. dmsoh

    dmsoh

    Регистр.:
    27 янв 2007
    Сообщения:
    192
    Симпатии:
    42
    Я просто не знаю как правильно. Не работает так:

    PHP:
    preg_match_all('/<div\s+class=[\'"]main[\'"]>\s+<a\s+href=[\'"](.*)[\'"]>/'$html$result);
     
  6. RolCom

    RolCom

    Регистр.:
    12 мар 2008
    Сообщения:
    351
    Симпатии:
    108
    Все работает:
    Код:
    <?php
    $w="... <div class=\"main\">\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t<a href=\"mislet.html\"> ...";
    preg_match('/<div\s+class=[\'"]main[\'"]>\s+<a\s+href=[\'"](.*)[\'"]>/', $w, $m);
    echo "[{$m[1]}]";
    
     
  7. [Гилыч]

    [Гилыч] Постоялец

    Регистр.:
    5 авг 2008
    Сообщения:
    57
    Симпатии:
    17
    PHP:
    string '<div class="main">' .
            
    '' .
            
    '<a href="mislet.html">';

    preg_match_all("/<div[^>]*class=\"main\"[^>]*>[^>]*<a[^>]*href=\"(.+?)\">/s"$string$matches);

    print_r($matches);
     
  8. Super_BOT

    Super_BOT

    Регистр.:
    21 апр 2009
    Сообщения:
    256
    Симпатии:
    28
    в первых вариантах, нужно обязательно экранировать одинарные и двойные ковычки врегулярном выражение - символам слеша :)
     
  9. RolCom

    RolCom

    Регистр.:
    12 мар 2008
    Сообщения:
    351
    Симпатии:
    108
    Кавычки и так везде экранированы.
     
Статус темы:
Закрыта.