[Регулярки & Mod_Rewrite] Задай вопрос, получи ответ.

Discussion in 'PHP' started by .:EnoT:., 19 Nov 2008.

Thread Status:
Not open for further replies.
  1. Snorlax

    Snorlax Banned

    Joined:
    28 Mar 2009
    Messages:
    0
    Likes Received:
    3
    Reputations:
    0
    Есть текст
    PHP:
    <div class="age" onclick="window.location.href='index.php?id=108591&g=1'">ololo</div>
    помогите вытащить index.php?id=108591

    пробую:

    PHP:
    preg_match('#window.location.href=([^"]+)&g=1#'$P$olala);
    но когда перед href ставлю кавычку то меняется структура кода и выдаёт ошибку
     
  2. Skofield

    Skofield Elder - Старейшина

    Joined:
    27 Aug 2008
    Messages:
    960
    Likes Received:
    390
    Reputations:
    58
    Snorlax,
    PHP:
    #window.location.href=\'([[:print:]]+)&g=1#
     
    1 person likes this.
  3. Cowboyl0l

    Cowboyl0l New Member

    Joined:
    19 Nov 2011
    Messages:
    31
    Likes Received:
    1
    Reputations:
    0
    код html нужно вырвать все что находиться href=" " между скобок, спасибо
     
  4. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,177
    Likes Received:
    1,156
    Reputations:
    202
    qqqqqqqqqqqqqqqqqqqqq
    PHP:
    if(preg_match_all('#href="(.*)"#Ui'$html$matches))
    var_dump($matches);
    else echo 
    'not found links';
     
  5. Teratex

    Teratex New Member

    Joined:
    13 Mar 2012
    Messages:
    28
    Likes Received:
    3
    Reputations:
    5
    Подскажите плиз почему не работает эта регулярка скрипте поиска такого фрагмента:
    По идее если какой-то поисковой прогой искать по файлам, то правильная
    но чет в PHP скрипте она не работает(
     
    #1845 Teratex, 18 Aug 2012
    Last edited: 18 Aug 2012
  6. kroŧ

    kroŧ Member

    Joined:
    19 May 2010
    Messages:
    129
    Likes Received:
    33
    Reputations:
    8
    Teratex
    Code:
    \<\?php*\s*\?>
     
  7. daniel777

    daniel777 Elder - Старейшина

    Joined:
    8 Jul 2010
    Messages:
    517
    Likes Received:
    90
    Reputations:
    37
    Подскажите, как отсюда
    Code:
    new Array('text','58');
    вытащить 58?
     
  8. Skofield

    Skofield Elder - Старейшина

    Joined:
    27 Aug 2008
    Messages:
    960
    Likes Received:
    390
    Reputations:
    58
    daniel777
    PHP:
    preg_match("#new Array\('text','(\d{2})'\);#"$str$match);
     
    1 person likes this.
  9. 0o Chris o0

    0o Chris o0 New Member

    Joined:
    16 Oct 2011
    Messages:
    142
    Likes Received:
    1
    Reputations:
    0
    Запрос в гугл: inurl:"fbconnect_action=myhome"
    PHP:
    preg_match_all('/q=http:\/\/(.*)fbconnect_action%3Dmyhome/'$str$res);
    Регулярка вытаскивает все начиная от первого q= до последнего fbconnect_action%3Dmyhome, а хотелось бы чтобы вытаскивала q=http://site.com/fbconnect_action%3Dmyhome

    Вот тут строка из которой пытаюсь вытащить.
     
  10. Skofield

    Skofield Elder - Старейшина

    Joined:
    27 Aug 2008
    Messages:
    960
    Likes Received:
    390
    Reputations:
    58
    0o Chris o0
    PHP:
    preg_match_all('#<h3 class="r"><a href="/url\?(q=.*)\&amp\;#U'$google$links);
     
  11. 0o Chris o0

    0o Chris o0 New Member

    Joined:
    16 Oct 2011
    Messages:
    142
    Likes Received:
    1
    Reputations:
    0
    Работает, но вытаскивает только первое вхождение. А в чем отличие между / и #? И что означает U после #?
     
    #1851 0o Chris o0, 26 Aug 2012
    Last edited: 26 Aug 2012
  12. kroŧ

    kroŧ Member

    Joined:
    19 May 2010
    Messages:
    129
    Likes Received:
    33
    Reputations:
    8
    0o Chris o0
    необходимо тестить на множестве, удобно использовать для составления рег.выражений:
    http://www.pcre.ru/eval/
     
  13. Skofield

    Skofield Elder - Старейшина

    Joined:
    27 Aug 2008
    Messages:
    960
    Likes Received:
    390
    Reputations:
    58
    1) 0o Chris o0, все работает:
    PHP:
    <?php
    $key 
    urlencode('inurl:"fbconnect_action=myhome"');
    $google file_get_contents("http://www.google.com/search?q=$key&start=0");
    preg_match_all('#<h3 class="r"><a href="/url\?(q=.*)\&amp\;#U'$google$links);
    var_dump($links);
    2) Ни в чем. Это просто ограничитель шаблона.
    3) Модификатор U означает минимизацию числителя, то есть искать как можно меньше совпадений.

    P. S. Читайте мануал!
     
    #1853 Skofield, 26 Aug 2012
    Last edited: 26 Aug 2012
  14. .::BARS::.

    .::BARS::. Elder - Старейшина

    Joined:
    13 Oct 2007
    Messages:
    379
    Likes Received:
    45
    Reputations:
    10
    есть сообщения типа


    Программист (1С: Предприятие, версия 8). 910-231.

    Программист (Аndroid, Windows). Работа по совместительству. 24-98-03.

    Мастер по ремонту компьютерной техники. Работа выездная по городу. График ненормированный. 94-13-55. Резюме на [email protected]

    Мастер по ремонту компьютеров, телефонов и прочей высокотехнологичной техники. Хороший коллектив, хорошая з/плата. Южный. 8-914-545-22-01.

    тра ла ла дом номер 36 554-688. 89432-77-78-32

    тралала 527678.89123456789

    тралала 17 улица тел 527678 89432-77-78-32

    требуется выдирать именно телефоны, телефоны как видно в разных форматах, кто как писал...

    знаю что это 2-е регулярки... но как дергать именно номер
     
  15. kroŧ

    kroŧ Member

    Joined:
    19 May 2010
    Messages:
    129
    Likes Received:
    33
    Reputations:
    8
    .::BARS::.
    PHP:
    $text='Программист (1С: Предприятие, версия 8). 910-231.
     Программист (Аndroid, Windows). Работа по совместительству. 24-98-03.
     Мастер по ремонту компьютерной техники. Работа выездная по городу. График ненормированный. 94-13-55. Резюме на [email protected]
     Мастер по ремонту компьютеров, телефонов и прочей высокотехнологичной техники. Хороший коллектив, хорошая з/плата. Южный. 8-914-545-22-01.
     тра ла ла дом номер 36 554-688. 89432-77-78-32
     тралала 527678.89123456789
     тралала 17 улица тел 527678 89432-77-78-32'
    ;
    preg_match_all('#[\d]+[\d-]+[\d]#i',$text,$ar);
    print_r($ar);
     
  16. j0sur

    j0sur Member

    Joined:
    8 Apr 2012
    Messages:
    140
    Likes Received:
    7
    Reputations:
    0
    Надеюсь туда запостил.
    Есть .htaccess с таким содержимым:
    Code:
     
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ $1.php
    
    Однако при переходе на site/test, где присутствует файл test.php выдается 404 ошибка. Что я делаю не так? Заранее благодарен и прошу сильно не бить, т.к. с php и вебом знаком весьма поверхностно.
     
  17. -=Zhenek=-

    -=Zhenek=- Elder - Старейшина

    Joined:
    31 Dec 2007
    Messages:
    271
    Likes Received:
    77
    Reputations:
    1
    В тексте есть вот такие куски кода:

    PHP:
    <li data-value="1627207:3232484" title="название" >
    <
    a href="#" style="background:url(ссылка) center no-repeat;" class="J_ClickCatcher">
    <
    span>название</span>
    </
    a>
     <
    i>разный текст</i>
    </
    li>
    идут они подряд. меня интересует только ссылка, название и цифры

    Забираю вот так:

    PHP:
    preg_match_all('#<li data-value="(.*?)" title="(.*?)" >
    <a href="\#" style="background:url\((.*?)\) center no-repeat;" class="J_ClickCatcher">#sm'
    ,$page,$o); 
    На локалке работает, на хостинге нет. регулярка много строчная, совпадает вплоть до символа. Название беру из верхней строчки т.к нижняя есть не всегда(в спанах).

    В чем ошибка? Дело вроде как в переносе строки.. т.к если убрать в регулярке вторую строку то название он получает отлично.. А мне бы еще и ссылочку..
     
  18. Skofield

    Skofield Elder - Старейшина

    Joined:
    27 Aug 2008
    Messages:
    960
    Likes Received:
    390
    Reputations:
    58
    -=Zhenek=-
    PHP:
    preg_match_all('#<li data-value="(.*?)" title="(.*?)" >.*<a href="\#" style="background:url\((.*?)\) center no-repeat;" class="J_ClickCatcher">#sm'$page$o); 
     
    1 person likes this.
  19. FunOfGun

    FunOfGun Elder - Старейшина

    Joined:
    5 Sep 2012
    Messages:
    388
    Likes Received:
    72
    Reputations:
    124
    Здравствуйте есть такой текст:
    Code:
    <select name="search[sublevel_1]" class="header-sublevels" redirect="objavlenij">
    для его нахождения использую такой regex:
    Code:
    <select name="search\[sublevel_1\]" class="header-sublevels" redirect="objavlenij">
    но по непонтным для мен причинам он не подходит. Похоже что-то не заэкранировал. Заранее благодарен за помощь.
     
  20. daniel777

    daniel777 Elder - Старейшина

    Joined:
    8 Jul 2010
    Messages:
    517
    Likes Received:
    90
    Reputations:
    37
    Еще кавычки нужно экранировать:
    Code:
    <select name=\"search\[sublevel_1\]\" class=\"header-sublevels\" redirect=\"objavlenij\">
     
    1 person likes this.
Thread Status:
Not open for further replies.