[Регулярки & 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 часа? мой друг говорит что месяца
     
  2. RESPECТ

    RESPECТ Member

    Joined:
    6 Feb 2009
    Messages:
    9
    Likes Received:
    6
    Reputations:
    0
    Помогите с регуляркой:

    PHP:
    <dt>Имя:</dt><dd><div style="width: 140px; overflow: hidden;"><a href="/id00900">вытащить_этот_текст</a></div></dd>
     
  3. L I G A

    L I G A Banned

    Joined:
    27 Jul 2008
    Messages:
    482
    Likes Received:
    380
    Reputations:
    49
    PHP:
    <?php   
    $code
    ='<dt>Имя:</dt><dd><div style="width: 140px; overflow: hidden;"><a href="/id00900">вытащить_этот_текст</a></div></dd>';   
    preg_match_all('/<a href="\/id00900">(.*)<\/a><\/div><\/dd>/i'$code$matches);   
    echo 
    "<pre>";   
    print_r ($matches[0][0]);   
    echo 
    "</pre>";   
    ?>
     
    #563 L I G A, 23 Jul 2009
    Last edited: 23 Jul 2009
  4. RESPECТ

    RESPECТ Member

    Joined:
    6 Feb 2009
    Messages:
    9
    Likes Received:
    6
    Reputations:
    0
    L I G A, забыл написать, что id00900 - может быть разным, и
    PHP:
    <dt>Имя:</dt><dd><div style="width: 140px; overflow: hidden;">
    Является явным указателем этой ссылки, т.к. до этого есть такие ссылки...
     
  5. PaCo

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

    Joined:
    6 Feb 2008
    Messages:
    436
    Likes Received:
    138
    Reputations:
    25
    PHP:
    $the_text=<<<HTML
    <dt>Имя:</dt><dd>
    <div style="width: 140px; overflow: hidden;"><a href="/id00900">вытащить
    _этот_текст</a></div>
    </dd>
    <dt>Имя:</dt><dd>
    <div style="width: 140px; overflow: hidden;"><a href="/id00900">вытащить_этот_текст_2</a></div>
    </dd>
    HTML;
    preg_match_all('#<div style="width: 140px; overflow: hidden;"><a href=.*[^>]>(.*)</a>#isU',$the_text,$match);
    print_r($match);
     
  6. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    PHP:
    <pre>
    <?php 
    $a 
    '<dt>Имя:</dt><dd><div style="width: 140px; overflow: hidden;"><a href="/id00900">вытащить_этот_текст</a></div></dd>';
    preg_match_all('|<dt>.*</dt><dd><div style=.*><a href=.*>(.*)</a></div></dd>|Ui',$a,$res);
    print_r($res[1]);
    ?>
    </pre>
     
  7. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    как распарсить строку типа

    PHP:
    {"userId":"24389417527847511997","menuType":"User","fio":"Ольга Широкова (  ..."}</div></div></a></div></td></tr></table></div><div><img class="online"
    делаю так:
    PHP:
    preg_match_all('/{"userId":"([0-9]*)","menuType":"User","fio":"(.{0,30})"}<\/div><\/div><\/a><\/div><\/td><\/tr><\/table><\/div><div><img class="online"/'$body$match);
    не находит из-за символов " ( ..."
    но в других случаях там вообще нет никаких символов, кроме латинских букв и пробелов
     
  8. e4key

    e4key New Member

    Joined:
    24 Jul 2009
    Messages:
    24
    Likes Received:
    1
    Reputations:
    0
    Дикс, лучше кинь пару запросов, чтобы понять что там быть может а что не может.

    А так:

    Code:
    {"userId":"([0-9]+)","menuType":"User","fio":"(.*?)\s\(  ..."}</div></div></a></div></td></tr></table></div><div><img class="online"
    
    У меня отлично работает (python). ХЗ как там в PHP. Может нужно что-то дополнительно экранировать.
     
  9. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    да в принципе уже разобрался, просто увеличил {0, 600}
    а концовка "( ..."" -- она вообще нестандартная, её не надо писать
     
  10. L I G A

    L I G A Banned

    Joined:
    27 Jul 2008
    Messages:
    482
    Likes Received:
    380
    Reputations:
    49
    PHP:
    <?php   
    $code
    ='{"userId":"24389417527847511997","menuType":"User","fio":"Ольга Широкова (  ..."}</div></div></a></div></td></tr></table></div><div><img class="online" )';   
    preg_match_all('/(?<!"userId":")(\d)+","menuType":"User","fio":"(.{0,30})(?=\(  ..."}<\/div><\/div><\/a><\/div><\/td><\/tr><\/table><\/div><div><img class="online")/i'$code$matches);   
    echo 
    "<pre>";   
    print_r ($matches[0][0]);   
    echo 
    "</pre>";   
    ?>
     
  11. alwex

    alwex New Member

    Joined:
    14 Dec 2008
    Messages:
    137
    Likes Received:
    4
    Reputations:
    2
    помогите, написал регулярку, но не правильно почему-то...

    вот есть текст:

    и мне надо что бы оно выдировало это с текста. я сделал:

     
  12. L I G A

    L I G A Banned

    Joined:
    27 Jul 2008
    Messages:
    482
    Likes Received:
    380
    Reputations:
    49
    \d - все цифры)
    и напиши что выдерать.
     
  13. FireFenix

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

    Joined:
    3 Jun 2009
    Messages:
    390
    Likes Received:
    115
    Reputations:
    23
    да выучи ты уже реглярки

    PHP:
    <?php

    $text 
    '<a href="/title/(любое)/" ТУТ ТОЖЕ ЛЮБОЙ ТЕКСТ>Тут тоже любой текст</a>';
    preg_match_all('/<a href="\/title\/([^"]*)"([^>]*)>([^>]*)<\/a>/'$text$match);

    print_r($match);

    ?>
    Code:
    Array
    (
        [0] => Array
            (
                [0] => <a href="/title/(любое)/" ТУТ ТОЖЕ ЛЮБОЙ ТЕКСТ>Тут тоже любой текст</a>
            )
    
        [1] => Array
            (
                [0] => (любое)/
            )
    
        [2] => Array
            (
                [0] =>  ТУТ ТОЖЕ ЛЮБОЙ ТЕКСТ
            )
    
        [3] => Array
            (
                [0] => Тут тоже любой текст
            )
    
    )
    
     
  14. alwex

    alwex New Member

    Joined:
    14 Dec 2008
    Messages:
    137
    Likes Received:
    4
    Reputations:
    2
    я же написал что выдерать

    <a href="/title/(любое)/" ТУТ ТОЖЕ ЛЮБОЙ ТЕКСТ>Тут тоже любой текст</a>
     
  15. PaCo

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

    Joined:
    6 Feb 2008
    Messages:
    436
    Likes Received:
    138
    Reputations:
    25
    Наверно стоит конкреизировать, тут можно понять что тебе все надо
    /title/(любое)
    ТУТ ТОЖЕ ЛЮБОЙ ТЕКСТ
    Тут тоже любой текст

    И почему вы такие изврашенсы? Неужели вам не будет удобнее использовать вместо // например ## без необходимости что то слешировать?
     
  16. L I G A

    L I G A Banned

    Joined:
    27 Jul 2008
    Messages:
    482
    Likes Received:
    380
    Reputations:
    49
    PHP:
    <?php    
    $code
    ='<a href="/title/(любое)/" ТУТ ТОЖЕ ЛЮБОЙ ТЕКСТ>Тут тоже любой текст</a>';    
    preg_match_all('/<a href="\/(.*)\/"[^><\/](.*)>(.*)<\/a>/i'$code$matches);    
    echo 
    "<pre>";    
    print_r ($matches);    
    echo 
    "</pre>";    
    ?>
     
  17. L I G A

    L I G A Banned

    Joined:
    27 Jul 2008
    Messages:
    482
    Likes Received:
    380
    Reputations:
    49
    да удобней написать # и потом не тыкать слеш , но / уже автоматом ставлю.
     
  18. alwex

    alwex New Member

    Joined:
    14 Dec 2008
    Messages:
    137
    Likes Received:
    4
    Reputations:
    2
    млин, почему-то не помогло...

    вот текст который парсер должен выдернуть

    <p style="margin:0 0 0.5em 0;"><b>Media from&nbsp;<a href="/title/tt0412142/" onclick="(new Image()).src='/rg/find-media-title/media_strip/images/b.gif?link=/title/tt0412142/';">"House M.D."</a> (2004)</b></p>


    но мне нужно именно там где ссылка, а он нифига...
     
  19. PaCo

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

    Joined:
    6 Feb 2008
    Messages:
    436
    Likes Received:
    138
    Reputations:
    25
    PHP:
    <?php
    $text
    =<<<HTML
    <p style="margin:0 0 0.5em 0;"><b>Media from&nbsp;<a href="/title/tt0412142/" onclick="(new Image()).src='/rg/find-media-title/media_strip/images/b.gif?link=/title/tt0412142/';">"House M.D."</a> (2004)</b></p>';
    HTML;
    preg_match_all('#<a href="(/title/.*)"#isU',$text,$match);  print_r($match);
     
    #579 PaCo, 25 Jul 2009
    Last edited: 25 Jul 2009
  20. alwex

    alwex New Member

    Joined:
    14 Dec 2008
    Messages:
    137
    Likes Received:
    4
    Reputations:
    2
    Всё, переделал я свой скрипт и улучшил немного и заработало и все вашы регулярки объеденил...)
     
    #580 alwex, 25 Jul 2009
    Last edited: 25 Jul 2009
Thread Status:
Not open for further replies.