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

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

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

    alwex New Member

    Joined:
    14 Dec 2008
    Messages:
    137
    Likes Received:
    4
    Reputations:
    2
    все, я сам разобрался
     
  2. alwex

    alwex New Member

    Joined:
    14 Dec 2008
    Messages:
    137
    Likes Received:
    4
    Reputations:
    2
    здравствуйте ещё раз, писал я регулярку и никак не могу её сделать рабочей

    есть текст

    Code:
       <tr><td class="type">премьера (мир)</td><td class="calendar"><a href="/level/80/film/279221/">14 ноября 2009</a></td></tr>
    
       <tr><td class="type">премьера (РФ)</td><td class="calendar"> <a class='all' href='/level/8/view/prem/year/2009/#279221'>19 ноября 2009</a>,&nbsp;<a href='/level/10/m_act[company]/4/' class='all'>&laquo;Парадиз&raquo;</a></td></tr>
    
    вот как я сделал

    Code:
      $search = '#<tr><td class="type">премьера (РФ)</td><td class="calendar">(.*)</td></tr>#'; 
     $search = '#<tr><td class="type">премьера (мир)</td><td class="calendar">(.*)</td></tr>#'; 
    
    но они не пашут
     
  3. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    alwex
    PHP:
    preg_match('~<tr><td class="type">премьера \(РФ\)</td><td class="calendar">(.*?)</td></tr>~i',$in,$out);
    Для любителей копировать не думая - придумали функцию preg_quote.
     
    _________________________
  4. alwex

    alwex New Member

    Joined:
    14 Dec 2008
    Messages:
    137
    Likes Received:
    4
    Reputations:
    2
    спасибо)
     
  5. OnArs

    OnArs Banned

    Joined:
    1 Aug 2008
    Messages:
    211
    Likes Received:
    13
    Reputations:
    1
    Получение параметров GET запроса

    Здравствуйте! :rolleyes:


    На странице есть вот такой текст:
    PHP:
    function contact() {
                
    popup("/JobSearch/JobContactDetails.aspx?JobId=45821542&JobTitle=Credit+Controller&Email=davidjarvis%40morgan-harvey.co.uk&Ref=DJ223&Tel=0844+811+0473&Fax=&Company=Morgan+Harvey&Contact=David+Jarvis&Address=&ExternalURL=""ContactDetails"470350);
            }
    Как с помощью регулярного выржаения выпарсить нужные мне:
    • JobId
    • JobTitle
    • Email
    • Ref
    • Tel
    • Fax
    • Company
    • Contact
    • Address
    • ExternalURL

    Т.е. все GET параметры передаваемые на страницу.


    Заранее благодарен! :confused:
     
  6. whexp

    whexp Member

    Joined:
    30 Nov 2009
    Messages:
    88
    Likes Received:
    29
    Reputations:
    5
    OnArs. А тебе даже не обязательно парсить. Можешь просто получить строку с парамтрами и разбирать ее функцией split (или ее аналогом, но в большинстве языков она есть). тоесть сплитишь по символу "&", в итоге у тебя будет список вида ["имя=значение", "имя=значение"] и каждый элемент списка ты можешь так же сплитить на знаке "=". ну можно и по регулярке. тут все предельно просто. возьмем, к примеру JobId:
    Code:
    JobId=(.*?)&
    И так все, что тебе нужно. Ну у последнего контрольный символ в конце будет не &, а двойные ковычки ".
     
  7. zythar

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

    Joined:
    16 Feb 2008
    Messages:
    517
    Likes Received:
    109
    Reputations:
    5
    есть строка вида:
    {aaa.bbb} {aaa.vvv} etc
    в одной строке может быть произвольное количество выражения.
    нужно взять то, что после точки.
    пробовал preg_match_all('/{aaa\.(.*)}/', строка, куда_нужно_записать). не получается.

    ps что интересно: если строка (да да, именно строка. ОДНА строка) будет такого вида:
    {aaa.bbb}
    {aaa.vvv}
    etc,

    то выражение после точки нормально записывается в массив.
     
  8. whexp

    whexp Member

    Joined:
    30 Nov 2009
    Messages:
    88
    Likes Received:
    29
    Reputations:
    5
    zythar,
    Code:
    <?php
        $i = "{aaa.bbb} {aaa.vvv}";
        preg_match_all("/{aaa\.(.*?)}/", $i, $q);
        print_r($q);
    ?>
     
    #848 whexp, 19 Dec 2009
    Last edited: 19 Dec 2009
    1 person likes this.
  9. zythar

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

    Joined:
    16 Feb 2008
    Messages:
    517
    Likes Received:
    109
    Reputations:
    5
    гм.. да, заработало, домо.
    если не трудно: чем отличается (.*?) от (.*)?

    просто времени нет искать, сорьте
     
  10. whexp

    whexp Member

    Joined:
    30 Nov 2009
    Messages:
    88
    Likes Received:
    29
    Reputations:
    5
    zythar, http://ru.wikipedia.org/wiki/Regex >> # 3.3.1 Жадная и ленивая квантификация
     
  11. Byrger

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

    Joined:
    7 Mar 2008
    Messages:
    521
    Likes Received:
    26
    Reputations:
    -4
    PHP:
    RewriteEngine On
     RewriteBase 
    /


     
    RewriteCond %{REQUEST_URI} !^/favicon.ico
     RewriteCond 
    %{REQUEST_URI} !^/js/
     
    RewriteCond %{REQUEST_URI} !^/css/
     
    RewriteCond %{REQUEST_URI} !^/images/

     
    RewriteRule ^(.[a-zA-Z0-9]+)/([a-zA-Z0-9]+)/(.+)/?$  index.php?action=$1&act=$2  
     RewriteRule 
    ^([^.]+)$ /index.php
    Про обращении к картинке /images/grade/b_grade.png открывается Index.php

    в чем ошибка?
     
  12. zythar

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

    Joined:
    16 Feb 2008
    Messages:
    517
    Likes Received:
    109
    Reputations:
    5
    домо (*
     
  13. Naydav

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

    Joined:
    30 Dec 2006
    Messages:
    439
    Likes Received:
    63
    Reputations:
    4
    Подскажите регулярку для следующей задачи
    Подходит любое слово, состоящие из букв и цифр, кроме слова admin

    '/site/test123' - подходит
    '/site/admin' - НЕ подходит

    Что-то типа
    'site/([\w\d^admin]+)'

    Спасибо
     
  14. LStr1ke

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

    Joined:
    29 Jul 2009
    Messages:
    801
    Likes Received:
    145
    Reputations:
    73
    "/^admin/i"
     
  15. Naydav

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

    Joined:
    30 Dec 2006
    Messages:
    439
    Likes Received:
    63
    Reputations:
    4
    LStr1ke
    Но мне нужны только слова и цифры (\w\d)
    В данном случае регулярка будет пропускать все ( и _,?* и т.д.)
     
  16. programming

    programming New Member

    Joined:
    26 Aug 2009
    Messages:
    190
    Likes Received:
    3
    Reputations:
    0
    Есть переменная, в которой лежит множество url'ов.
    Например,
    http://ya.ru/hhgyugyy/llkkk.pkloij/.kkkko
    http://jjfurh.com/efef/po.,ki
    http://hhgfyr.info/?kjtit=poklojk


    Какой регуляркой можно выдернуть домены?
    То есть должен на выходе получиться массив:
    http://ya.ru/
    http://jjfurh.com/
    http://hhgfyr.info/

    Думал сделать такой регуляркой, но она вырывает до последней косой черты, а нужно до первой:
    preg_match_all('/http:\/\/(.*)\//',$links, $regs);

    Спасибо.
     
  17. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    PHP:
    <pre>
    <?php
    $a 
    '
    http://ya.ru/hhgyugyy/llkkk.pkloij/.kkkko
    http://ya1.ru/efef/po.,ki
    http://ya2.ru/kjtit=poklojk'
    ;
    preg_match_all('/(http:\/\/?[^\/]+\/)/i',$a,$b);
    print_r ($b[1]);
    ?>
    </pre>
     
    1 person likes this.
  18. programming

    programming New Member

    Joined:
    26 Aug 2009
    Messages:
    190
    Likes Received:
    3
    Reputations:
    0
    Большое спасибо.
     
  19. Naydav

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

    Joined:
    30 Dec 2006
    Messages:
    439
    Likes Received:
    63
    Reputations:
    4
    Подскажите регулярку для следующей задачи
    Подходит любое слово, состоящие из букв и цифр(ТОЛЬКО ИЗ БУКВ И ЦИФР), кроме слова admin

    '/site/test123' - подходит
    '/site/admin' - НЕ подходит
    '/site/neadmi1n"&(*&)*_ ""1' - НЕ подходит

    Что-то типа
    'site/([\w\d^admin]+)'

    Спасибо
     
    #859 Naydav, 23 Dec 2009
    Last edited: 23 Dec 2009
  20. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,174
    Likes Received:
    1,157
    Reputations:
    202
    PHP:
    <?php
    $str 
    '/site/admin1';
    if(
    preg_match('#$/site/admin^#i',$str))
    echo 
    'NO';
    else echo 
    'OK';
    ?>
     
Thread Status:
Not open for further replies.