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

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

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

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    Дык сразу бы код выложил)

    PHP:
    preg_replace('~<a[^>]*>(.+)</a>~Usi','$1',$e); 
    замени на:

    PHP:
    $e preg_replace('#<a href="[^"]*">([^<]*)</a>#si','<a href="http://\\1">\\1</a>',$e);
    И всё будет работать)
     
    1 person likes this.
  2. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    blaga Может лучше так?
    PHP:
     function get_full_vul($url)
    {
    $r=file_get_contents($url);

    $re='#<div class="cont-cont">(.*)<p><strong>Источники#sU';
    preg_match($re,$r,$all);
    $e=strip_tags($all[1],'<p><strong><h1><b><br>');

    echo 
    $e;
    }

    get_full_vul("http://www.securitylab.ru/vulnerability/369396.php");  
    Про модификаторы - тут http://ru.php.net/manual/ru/reference.pcre.pattern.modifiers.php
     
    _________________________
    1 person likes this.
  3. blaga

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

    Joined:
    23 Mar 2006
    Messages:
    884
    Likes Received:
    273
    Reputations:
    106
    .:EnoT:., спасиб, работает как нужно. :)
    Gifts, мне не нужно все эти теги удалять, только некоторые.
     
  4. Велемир

    Joined:
    19 Jun 2006
    Messages:
    1,123
    Likes Received:
    96
    Reputations:
    -25
    Есть строки вида: <link rel="shortcut icon" href="/sat/favicon.ico" type="image/x-icon"/>

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

    preg_match("/<link rel=(.*)/",$out,$matches) Не работает и выдирает всю строку,а тег идёт как <link rel =что-то тут />

    Как раз /> и не удаётся впаять...пишет,что,мол,неизвестный модификатор.Само собой,разумеется...Пробовал по-всякому,но выходило одно и тоже.
     
  5. [dei]

    [dei] Active Member

    Joined:
    24 Nov 2008
    Messages:
    171
    Likes Received:
    112
    Reputations:
    5
    /<link rel="(.*?)"/
     
  6. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    PHP:
    <pre>
    <?php

    $in 
    '<link rel="shortcut icon" href="/sat/favicon.ico" type="image/x-icon"/>';
    preg_match('|<link rel="(.*)".*/>|Ui',$in,$x);
    print_r ($x);

    ?>
    </pre>
     
  7. Велемир

    Joined:
    19 Jun 2006
    Messages:
    1,123
    Likes Received:
    96
    Reputations:
    -25
    Это всё,конечно,замечательно...но вот как он работает - загадка древних )))
     
  8. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    в смысле как:

    <link rel="

    тут все понятно

    (.*)

    означает любые символы, т.е. всё, скобочки означают, что надо сохранить

    ".*/>

    всё, что после кавычек и до знака />, просто обозначается, что там не пусто, сохранять не надо, поэтому и скобочек нет.

    || отличается от // только тем, что в || можно писать как есть, например </a>,

    а в // только так тогда придется: <\/a> - т.е. экранировать так называемые специальные символы.

    Вот отличная статья по регуляркам в общем, сам по ней вкуривал, на самом дело всё просто до удивления, тем более для программера (и не слушай тех, кто говорит "замудренные словечки" - типо метасимволы и прочее, всё на самом деле как детском садике):

    http://pyha.ru/forum/topic/19.0

    просто надо почитать и врубиться

    ЗЫЖ Просто уяснить, что очень похоже, когда ищешь файло в виндах, например чтобы найти все .gif файлы - набираешь в строке поиска - *.gif*
    Ну и тут тоже самое, задаешь маску и смотришь потом, правильно задал или нет.
     
    #268 Pashkela, 5 Mar 2009
    Last edited: 5 Mar 2009
    1 person likes this.
  9. Велемир

    Joined:
    19 Jun 2006
    Messages:
    1,123
    Likes Received:
    96
    Reputations:
    -25
    Я пока другую читал,но твою обязательно прочитаю:).Теперь вопрос по-другой регги:

    /^[a-zA-Z0-9_!#%])+@{1,1}[m][a][l][.][r]{1,1}$/

    Это регулярка,которая чекает гипотетическое:) мыло ТОЛЬКО mail.ru:)9Так,для себя накатал).Потом пришла мысля,что можно из файла потом считать и сохранять куда-то.Я не прошу каких-то программных решений - это чисто для тренировки:).Всё окей,но у меня в $matches(я просто ток регулярку привёл),сохраняется только первый символ мыла:(.Но оно и ясно - я ведь обработал только один символьный класс:).Однако, квантификатор + должен тоже с этим бороться:(.Символы ^ и $ должны тоже решать проблему с обработкой целой строки.Как выйти из положения пока не решил...

    ЗЫ: http://www.phpclub.ru/detail/article/regexp_1 Тут тоже статейка хороффая,но я её ещё пока ни асилил до конца:).
     
  10. m0nsieur

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

    Joined:
    8 Apr 2008
    Messages:
    223
    Likes Received:
    69
    Reputations:
    10
    /* upd */ для логина
    /^([a-zA-Z0-9_!#%]+)@{1,1}[m][a][l][.][r]{1,1}$/
     
    #270 m0nsieur, 5 Mar 2009
    Last edited: 5 Mar 2009
  11. Велемир

    Joined:
    19 Jun 2006
    Messages:
    1,123
    Likes Received:
    96
    Reputations:
    -25
    Нэнэнэ...он же сохранит полностью email:),а я хотел,чтобы он только сам логин вырезал.

    P.S.: Кстати,там два элемента массива...тобишь два совпадения ? Но такого не может быть.Или же это две разные переменные...
     
  12. AkyHa_MaTaTa

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

    Joined:
    19 Mar 2007
    Messages:
    557
    Likes Received:
    306
    Reputations:
    27
    /^([a-zA-Z0-9_!#%]+)@{1,1}[m][a][l][.][r]{1,1}$/
    Омг,
    Если ты собрался читать из файла то наверно ^ $ не стоит указывать:
    #([0-9a-z_]+)@mail\.ru#i
     
    2 people like this.
  13. Велемир

    Joined:
    19 Jun 2006
    Messages:
    1,123
    Likes Received:
    96
    Reputations:
    -25
    Опля,сработало ж )))Вот ток непонятно,почему не надо указывать ^ и $.Считывается то вся строка...Ты указал модификатор /i,а он распространяется на все символы.Мало я знаю ещё походу:)
     
    #273 Велемир, 5 Mar 2009
    Last edited: 5 Mar 2009
  14. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    Вот эта регулярка вытаскивает ВСЕ мейлы:

    /\w+@\w+.\w+/

    в эта только мейл.ру:

    '/\[email protected]/'
     
  15. AkyHa_MaTaTa

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

    Joined:
    19 Mar 2007
    Messages:
    557
    Likes Received:
    306
    Reputations:
    27
    \w - Любой символ, образующий "слово" это и кавычки и все на свете, я думаю на mail.ru запрешены такие имена в мыльнике, да и везде так.
     
    1 person likes this.
  16. Велемир

    Joined:
    19 Jun 2006
    Messages:
    1,123
    Likes Received:
    96
    Reputations:
    -25
    Рулишь:))Но с \w пишут,что не катит с символами типа _,а только с диапазонами a-zA-Z,но из-за локали(я так понял - это локалхост),зависит многое...
     
    1 person likes this.
  17. PaCo

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

    Joined:
    6 Feb 2008
    Messages:
    436
    Likes Received:
    138
    Reputations:
    25
    "word" символ - это произвольная цифра, буква или символ подчеркивания, проще говоря, любой символ, который может являться частью 'слова' в Perl.

    Но если локаль позволяет то будут и другие символы, отличные от инглиша
     
  18. Chaak

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

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80

    что вы делаете товарищь)))

    PHP:
    #^([a-z0-9\_\.\-]+)\@mail\.ru$#i
    ^ и $ это начало конец строки..
    () - выделение в подвыражение, оно собственно тут не особо нужно
    i - модификатор неучета регистра
     
    1 person likes this.
  19. Велемир

    Joined:
    19 Jun 2006
    Messages:
    1,123
    Likes Received:
    96
    Reputations:
    -25
    Почему () не особо нужно ? Как же тогда резалтить в фаил или ещё куда ?Поясни-ка:(
     
  20. PaCo

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

    Joined:
    6 Feb 2008
    Messages:
    436
    Likes Received:
    138
    Reputations:
    25
    Сегодня день пьяного гуру? Если не сложно чак обьясни мне зачем слешировать @ и _, грубо говоря вот такое регулярное выражения будет работать с preg_match -#([^_\.\-][0-9a-z_\-\.]{1,16})@mail\.ru#i без лишних телодвижений ,

    А как ты собрался выташить имя без подмаски?

    З.Ы. 2Велемир не кидайся умными слова пытаесь скрыть свои непонимание чего то.
     
    #280 PaCo, 6 Mar 2009
    Last edited: 6 Mar 2009
Thread Status:
Not open for further replies.