За последние 24 часа нас посетили 15360 программистов и 1632 робота. Сейчас ищут 840 программистов ...

последовательность букв и цифр (регулярка)

Тема в разделе "PHP для новичков", создана пользователем joost, 9 июл 2008.

  1. joost

    joost Guest

    Надо вынять урл из такой строки
    PHP:
    1. $page="<TD class=micro title=Canon i-SENSYS MF4018 align=left><A href=http://www.site.com/Canon-i-SENSYS-MF4018.htm>";
    2.  
    учитывая
    HTML:
    1. <TD class=micro title
    PHP:
    1. print $kilk_data=preg_match_all("/<TD class=micro title=\w+><A href=(.*)>/isU",$page,$data);
    дает 0 совпадений.
    В чем проблема?
     
  2. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    \w+ - это слово. пробел не часть слова.
     
  3. joost

    joost Guest

    Sergey89
    а как обозначить любую последовательность слов, пробелов, цифр?
     
  4. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Код (Text):
    1. .*
     
  5. joost

    joost Guest

    Sergey89
    а что делает модификатор U? В нете всюду про "жадность пишет". Но что делает не понятно.
     
  6. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Код (Text):
    1. .*
    Будет соответствовать минимально возможному совпадению.
     
  7. joost

    joost Guest

    вот еще вопросик
    HTML:
    1.  
    2. <strong>289$</strong>
    3.  
    как выдернуть 289 понятно, но $ мешает.

    делаю /<strong>(.*)\$</strong>/

    не помагает
     
  8. DarkElf

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

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    joost

    регулярку в апострофы попробуй взять вместо двойных кавычек
     
  9. joost

    joost Guest

    как упростить регулярку ?
    PHP:
    1. /http:\/\/site.com|http:\/\/www.site.com/
     
  10. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
  11. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Код (Text):
    1. /http:\/\/(www\.)?site\.com/
     
  12. joost

    joost Guest

    Sergey89
    а как записать /.*?/

    .* надо же в () брать
     
  13. joost

    joost Guest

    вот еще такая проблема
    PHP:
    1. preg_match_all("/<A href=\"(http:\/\/www\.site\.ua\/)?(.*)\"(.*)?\">/isU",$page,$url);
    не находит ничего.

    а если
    PHP:
    1. preg_match_all("/<A href=\"(.*)\"(.*)?\">/isU",$page,$url);
    выдает все урлы, что есть на странице

    почему не реагирует на
    PHP:
    1. (http:\/\/www\.site\.ua\/)?
    ?
     
  14. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Может так:
    preg_match_all("/<A href=\"(http:\/\/www\.site\.ua\/)(.*)?>/isU", '<a href="http://www.site.ua/url=1" >',$url);

    анти-пожиральщика после (.*) первого забыли. А нужны ли доп. параметры из ссылки?
     
  15. joost

    joost Guest

    title, alt и т.д. не нужны
     
  16. joost

    joost Guest

    предложите кто может универсальное выражение для "выдергивания" урлов любого формата
     
  17. joost

    joost Guest

    кроме
    HTML:
    1. <a href="http://www.site.ua/url=1
    есть и страници вида
    HTML:
    1. <a href="ur.htm
    PHP:
    1. preg_match_all("/<A href="(http:\/\/www\.site\.ua\/)?(.*)"(.*)?">/isU",$page,$url);
    должен выдергивать и те и другие так и делает, но выводит урлы
    http://www.site.ua/url=1
    ur.htm

    хотя должен
    url=1
    ur.htm

    или я не прав?
     
  18. joost

    joost Guest

    в
    PHP:
    1. /<A href=\"(http:\/\/(www\.)?site\.com\/)?[^http](.*)\"(.*)?\">/isU
    седает первый символ в
    PHP:
    1. $url[[b]3[/b]][$i]
    почему? что не правильно?
     
  19. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    потому что первый символ h, t или p.
     
  20. joost

    joost Guest

    Sergey89
    а как правильно сделать?
    надо выбрать урлы в которых есть или нет site.com и если нет site.com, то и не должно быть http
     
  21. joost

    joost Guest

    первый символ есть и с, а - не в этом дело
     
  22. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Просто выбери все адреса на странице и пробегись по ним циклом, а не мучайся с универсальной регуляркой
     
  23. joost

    joost Guest

    PHP:
    1. [^http]
    совпадает со всеми строками, в которых нет http или со строками, где нет символа h, но есть ttp?

    обясните! запутался уже.
     
  24. joost

    joost Guest

    Sergey89
    нужна имено универсальная регулярка.
    почему
    PHP:
    1. /<A href=\"(http:\/\/(www\.)?site\.com\/)?[^http](.*)\"(.*)?\">/isU
    не правильно пашет?
    "Жрет" первый символ. Вроде все правильно
     
  25. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Нет символа h, t или p.