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

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

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

    expee New Member

    Joined:
    2 Feb 2010
    Messages:
    23
    Likes Received:
    1
    Reputations:
    0
    Code:
    import re
    
    h = """<span style="color:#777777;"><a class='addAudioLink' href="" onclick="addAudio(this, {act:'a_add',add:1,gid:0,aid:73997023,oid:66812379 ,hash:'4284ff74a2fa5248ba79500ef5f9388c'});return false;">Добавить</a></span>"""
    j = re.search("aid:(?P<aid>\d+),oid:(?P<oid>\d+) ,hash:'(?P<hash>\w+)'", h)
    print j.groups()
    Code:
    ('73997023', '66812379', '4284ff74a2fa5248ba79500ef5f9388c')
    
    Или вот так на Perl:
    Code:
    #!/usr/bin/perl
    
    $h = <<EOF;
    <span style="color:#777777;"><a class='addAudioLink' href="" onclick="addAudio(this, {act:'a_add',add:1,gid:0,aid:73997023,oid:66812379 ,hash:'4284ff74a2fa5248ba79500ef5f9388c'});return false;">Добавить</a></span>
    EOF
    
    $h =~ /aid:(\d+),oid:(\d+) ,hash:'(\w+)'/;
    
    print "aid: $1\n";
    print "oid: $2\n";
    print "hash: $3\n";
    Code:
    aid: 73997023
    oid: 66812379
    hash: 4284ff74a2fa5248ba79500ef5f9388c
    С PHP знаком плохо, но:
    Code:
    <?php
    $s = <<<EOF
    <span style="color:#777777;"><a class='addAudioLink' href="" onclick="addAudio(this, {act:'a_add',add:1,gid:0,aid:73997023,oid:66812379 ,hash:'4284ff74a2fa5248ba79500ef5f9388c'});return false;">Добавить</a></span>
    EOF;
    preg_match_all("/aid:(?<aid>\d+),oid:(?<oid>\d+) ,hash:'(?<hash>\w+)'/", $s, $m);
    
    echo "<p>aid: " . $m["aid"][0] . "</p>";
    echo "<p>oid: " . $m["oid"][0] . "</p>";
    echo "<p>hash: " . $m["hash"][0] . "</p>";
    ?> 
    Code:
    aid: 73997023
    
    oid: 66812379
    
    hash: 4284ff74a2fa5248ba79500ef5f9388c
    
     
    #981 expee, 7 Mar 2010
    Last edited: 7 Mar 2010
  2. IgrikX

    IgrikX New Member

    Joined:
    13 Aug 2009
    Messages:
    114
    Likes Received:
    1
    Reputations:
    -3
    чёт не выходит.. пробую на php сделать...
    PHP:
    <?php
    $string 
    "<span style='color:#777777;'><a class='addAudioLink' href='' onclick='addAudio(this, {act:'a_add',add:1,gid:0,aid:73997023,oid:66812379   ,hash:'4284ff74a2fa5248ba79500ef5f9388c'});return false;'>Добавить</a></span>";
    preg_match_all("/aid:(\d+),oid:(\d+) ,hash:'(\w+)'/"$string$arr);
    echo 
    $arr;
    ?>
    в чём проблема?
     
  3. expee

    expee New Member

    Joined:
    2 Feb 2010
    Messages:
    23
    Likes Received:
    1
    Reputations:
    0
    Обновил предыдущий пост.
     
  4. IgrikX

    IgrikX New Member

    Joined:
    13 Aug 2009
    Messages:
    114
    Likes Received:
    1
    Reputations:
    -3
    нее.. не выходит.
     
  5. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,170
    Likes Received:
    1,155
    Reputations:
    202
    Проблема в тебе, т.к. функция возвращает array

    PHP:
    <?php
    $str 
    = <<<HTML
    <span style="color:#777777;"><a class='addAudioLink' href="" onclick="addAudio(this, {act:'a_add',add:1,gid:0,aid:73997023,oid:66812379 ,hash:'4284ff74a2fa5248ba79500ef5f9388c'});return false;">Добавить</a></span>
    HTML;

    if(
    preg_match('#gid:(\d+),aid:(\d+),oid:(\d+)#',$str,$m))
    print_r($m);
    ?>
     
    #985 b3, 7 Mar 2010
    Last edited: 7 Mar 2010
  6. programming

    programming New Member

    Joined:
    26 Aug 2009
    Messages:
    190
    Likes Received:
    3
    Reputations:
    0
    Есть сайт. http://v-ctile.ru/
    Под каждым дизайном есть кнопка "получить". При нажатии на неё выдаётся "Отправьте SMS-сообщение 838610 на номер 7122". Вот нужно спарсить 838610.
    Спасибо.
     
  7. Palanik

    Palanik New Member

    Joined:
    16 Feb 2010
    Messages:
    9
    Likes Received:
    0
    Reputations:
    0
    8..... - держи, выдерет любое шестизначное чило начинабщееся с восьми
     
  8. programming

    programming New Member

    Joined:
    26 Aug 2009
    Messages:
    190
    Likes Received:
    3
    Reputations:
    0
    Я вообще не могу понять даже откуда выдирать. Я так понимаю, что это окно JS..

    Вопрос решён!!!
     
    #988 programming, 8 Mar 2010
    Last edited: 8 Mar 2010
  9. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,170
    Likes Received:
    1,155
    Reputations:
    202
    Вообщето данное выражение будет выдирать все подрят начиная с "8" длинною 6 символов, это может быть что угодно- пробел, символы, числа и тд.
     
  10. Palanik

    Palanik New Member

    Joined:
    16 Feb 2010
    Messages:
    9
    Likes Received:
    0
    Reputations:
    0
    Благодарю за дополнение.
     
  11. SeNaP

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

    Joined:
    7 Aug 2008
    Messages:
    378
    Likes Received:
    69
    Reputations:
    20
    Помогите разобраться с регуляркой
    PHP:
    $upd curl_init();

    curl_setopt($updCURLOPT_URL"http://".$user['url']); 

    curl_setopt($updCURLOPT_RETURNTRANSFER1);

    $ress curl_exec($upd);

    curl_close($upd);

    $ress preg_replace('#(<meta name="description" content=")(.*)(">)#iU','$2',$ress);
    echo 
    $ress;
    Нужно ,чтобы вывело то, что режется регуляркой .
    А выводится то , что режется регуляркой и сам сайт.
    Дак вот, как сделать так, чтобы выводилось ТОЛЬКО, то , что режется регуляркой ?
     
  12. Compton

    Compton Member

    Joined:
    31 Jan 2010
    Messages:
    290
    Likes Received:
    25
    Reputations:
    0
    т.к. $ress является массивом,то нужно выводить его индекс
     
  13. SeNaP

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

    Joined:
    7 Aug 2008
    Messages:
    378
    Likes Received:
    69
    Reputations:
    20
    Спасибо :)
    Теперь возник другой вопрос, уже 1.2 часа сижу "мозги" ломаю
    Как вырезать из этой строки
    Code:
    http://www.google.ru/search?hl=ru&source=hp&q=[COLOR=DarkRed]antichat.ru[/COLOR]&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google&lr=&aq=f&oq=
    
    что бы вернуло antichat.ru
    Пробовал так
    PHP:
    $a preg_replace('#(&q=)(.*)(&b)#iU','$2',$a);
    echo 
    $a;
    :(
     
    #993 SeNaP, 10 Mar 2010
    Last edited: 10 Mar 2010
  14. Compton

    Compton Member

    Joined:
    31 Jan 2010
    Messages:
    290
    Likes Received:
    25
    Reputations:
    0
    Senap
    PHP:
    <?php
    $text
    ="http://www.google.ru/search?hl=ru&source=hp&q=antichat.ru&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google&lr=&aq=f&oq=";
    preg_match('/q=(.*)&btnG/',$text,$m);
    echo 
    $m[1];
    ?>
    UPD:
    ('#(&q=)(.*)(&b)#iU','$2',$a);
    echo $a;

    1. Название переменной не может быть цифровым
    2. Я же сказал,что нужно индекс выводить
     
    #994 Compton, 10 Mar 2010
    Last edited: 10 Mar 2010
    1 person likes this.
  15. DTW

    DTW Banned

    Joined:
    11 May 2008
    Messages:
    221
    Likes Received:
    52
    Reputations:
    11
    Как выбрать 2 варианта

    PHP:
     $pat ='#href=\"(/lv/work/are-required/today/page\d\.html)\"#is';
       
    preg_match_all($pat,$string,$poc);

    Проблема следующая
    при поиске на совпадение линков
    может быть 2 варианта

    Вопрос как найти 2 вариант ипользую регулярку .

    есть оператор альтернативы #\.txt|.doc#.
     
  16. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    PHP:
     $pat ='#href=\"((/lv/work/are-required/today/)page\d\.html)\"#is';
       
    preg_match_all($pat,$string,$poc);

     
  17. Fepsis

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

    Joined:
    17 Sep 2008
    Messages:
    791
    Likes Received:
    391
    Reputations:
    72
    Помогите с регуляркой для парсинга из текста MD5 хешей...
    "#([a-f0-9]{32})#is" не подходит, так как определяет как хешь часть строки из символов [a-f0-9] длинной больше 32.. а мне не нужно это...

    Если сделать так: "#[^a-f0-9]+([a-f0-9]{32})[^a-f0-9]+#is" то есть по бокам подставить как минимум по одному символу не из [a-f0-9], тогда не определяются хеши идущие подряд через пробел (другой символ)..
    Подскажите.. :)
     
  18. Omegа

    Omegа Member

    Joined:
    16 Dec 2009
    Messages:
    27
    Likes Received:
    11
    Reputations:
    5
    Попробуй регулярку
    Code:
    ~\b([a-f0-9]{32})\b~isU
     
    2 people like this.
  19. programming

    programming New Member

    Joined:
    26 Aug 2009
    Messages:
    190
    Likes Received:
    3
    Reputations:
    0
    Есть регулярка:
    PHP:
    preg_match_all('/http:\/\/?([^\/]+)\//i',$url$regs);
    Выдирает из ссылки домен. Но работает она только для ссылок, домен которых оканчивается слэшем(/).
    Из ссылки вида http://lenta.ru - lenta.ru не будет выдернута.
    Так вот каким образом можно составить регулярку, которая выдирала бы из ссылок http://lenta.ru - lenta.ru
    Причём универсальность для всех ссылок не нужна. Регулярке будут подсовываться ссылки исключительно без слэша после домена.
     
  20. Compton

    Compton Member

    Joined:
    31 Jan 2010
    Messages:
    290
    Likes Received:
    25
    Reputations:
    0
    PHP:
    <?php
    $url
    ='http://www.lenta.ru';
    preg_match('/http:\/\/(www\.)?(.*)/i',$url$n);
    echo 
    $n[2];
    ?>
     
    2 people like this.
Thread Status:
Not open for further replies.