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

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

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

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

    Joined:
    4 Dec 2007
    Messages:
    367
    Likes Received:
    140
    Reputations:
    23
    мне надо собрать всё что внутри тегов <dt></dt>
    PHP:
    <?php
    $f 
    file_get_contents("http://yaca.yandex.ru/");
    preg_match_all("/<dt>(.*)<\/dt>/",$f,$m);
    print_r($m);
    ?>
    почему пусто??
     
    1 person likes this.
  2. ikolla$$

    ikolla$$ Banned

    Joined:
    6 Apr 2008
    Messages:
    80
    Likes Received:
    27
    Reputations:
    5
    PHP:
    <?php
    $f 
    file_get_contents('http://yaca.yandex.ru/');
    $search preg_match_all('#<dt>(.*)</dt>#',$f,$m);
    print_r($m);
    echo 
    $m[0];
    ?>
     
    1 person likes this.
  3. ntldr

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

    Joined:
    4 Dec 2007
    Messages:
    367
    Likes Received:
    140
    Reputations:
    23
    не помогло, то же самое абсолютно
     
    1 person likes this.
  4. ikolla$$

    ikolla$$ Banned

    Joined:
    6 Apr 2008
    Messages:
    80
    Likes Received:
    27
    Reputations:
    5
    :-D Я опять накурился,меня щас к php пускать низя :(
     
    1 person likes this.
  5. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    ntldr Либо вместо (.*) использовать ([\s\S]*) либо

    PHP:
    <?php
    $f 
    file_get_contents("http://yaca.yandex.ru/");
    preg_match_all("/<dt>(.*)<\/dt>/s",$f,$m);
    print_r($m);
    ?> 
    Обратить внимание на модификатор s после слеша. Почему так - читать тут: http://ru.php.net/manual/ru/reference.pcre.pattern.modifiers.php
     
    _________________________
    1 person likes this.
  6. AkyHa_MaTaTa

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

    Joined:
    19 Mar 2007
    Messages:
    557
    Likes Received:
    306
    Reputations:
    27
    <?php
    $f = file_get_contents("http://yaca.yandex.ru/");
    preg_match_all("/<dt>(.*)<\/dt>/isU",$f,$m);
    print_r($m);
    ?>
     
  7. svesve

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

    Joined:
    15 Jun 2007
    Messages:
    574
    Likes Received:
    86
    Reputations:
    11
    как разложить такую строчку ??
    PHP:
    UPDATE holidays (id,user_id,date_start,date_finish,type_id,audit_idVALUES ('','$_POST[user_id]','$_POST[date_start]',
    '$_POST[date_finish]','$_POST[holidays_type]',
    '$_SESSION[user_id]')
    каждому полю соответствовало свое значение
    н-р
    id=''
    user_id=$_POST[user_id].....
     
  8. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    Так вообще делать нельзя, прикинь, чо я могу в $_POST[user_id] занести тебе прямо в базу сразу
     
  9. svesve

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

    Joined:
    15 Jun 2007
    Messages:
    574
    Likes Received:
    86
    Reputations:
    11
    эммм а как правильно?
     
  10. m0nsieur

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

    Joined:
    8 Apr 2008
    Messages:
    223
    Likes Received:
    69
    Reputations:
    10
    2 svesve
    он имел в виду, что необходима фильтрация пришедших данных от пользователя, в случае с $_POST[user_id] полагая, что это будет только int можно сделать так - $user_id =intval($_POST[user_id]);


    а по теме, если ты подобным образом сделаешь проверки, может и не надо будет регулярками разделять таким образом как ты показал, а вручную забить.
     
    #210 m0nsieur, 28 Jan 2009
    Last edited: 28 Jan 2009
  11. svesve

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

    Joined:
    15 Jun 2007
    Messages:
    574
    Likes Received:
    86
    Reputations:
    11
    ненен мне регулярка нужна для другого ))) вот собственно и спросил как будет выглядеть шаблон поиска!
    а про фильтрацию спасибо!!!
     
  12. m0nsieur

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

    Joined:
    8 Apr 2008
    Messages:
    223
    Likes Received:
    69
    Reputations:
    10
    попробуй так - preg_match('/.* \\((.*)\\) .* \\((.*)\\)/i', $subject)
    таким образом найдутся 2 строки - id,user_id,date_start,date_finish,type_id,audit_i и '','$_POST[user_id]','$_POST[date_start]', '$_POST[date_finish]','$_POST[holidays_type]','$_SESSION[user_id]'

    для каждой строки сделаешь explode() по запятой и сохранишь результаты в разные массивы. В итоге у тебя будут 2 массива со значениями $arr1[0] = 'id' и т.д. и второй массив $arr2[0] = '' и т.д. ну а потом уже склеиваешь их как тебе надо.
     
    1 person likes this.
  13. bombeg

    bombeg Member

    Joined:
    27 Oct 2008
    Messages:
    136
    Likes Received:
    83
    Reputations:
    8
    да и потом большинство делает запрос с user_id = 0. зачем правда не понятно.
     
  14. m0nsieur

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

    Joined:
    8 Apr 2008
    Messages:
    223
    Likes Received:
    69
    Reputations:
    10
    ну тут надо понимать конечно, что user_id не может никогда быть 0 по логике, и делать соотв. проверку.
     
  15. 159932

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

    Joined:
    28 Sep 2007
    Messages:
    587
    Likes Received:
    462
    Reputations:
    5
    '#\'(.+)\'#'
     
  16. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    RedirectMatch (.*lol)$ http://www.microsoft.com$1
     
  17. Велемир

    Joined:
    19 Jun 2006
    Messages:
    1,123
    Likes Received:
    96
    Reputations:
    -25
    RedirectMatch /[^0-5]grab.php http://www.google.ee

    Почему при запросе grab.php открывается сам скрипт ? Он ведь не должен удовлетворять условию запроса ? Или я чего-то не так понял.

    Ещё вопросы: Как замутить редирект именно для конкретных айпи адресов,а остальных оставить в покое ?)

    Нашёл статью,где писали про круглые скобки:

    http://beget.ru/art9.html#mod_rewrite

    * Круглые скобки () используются для выделения групп символов.В дальнейшем к ним можно обращатся по номеру.

    И регулярка ниже:

    RedirectMatch /(.*)/(.*)/index.html$ http://mysite.ru/script.php?par1=$1&par2=$2

    Я так и не понял,как эти скобки работают,но думаю,что среагирует на любые символы в скобках,присутствующие ноль или более раз.Также непонятно,нужно ли ставить в каждой регулярке символ $ и почему здесь не стоят ограничители,которыми могут служить любые символы.В обрабатываемой строке,я так понял, будет помещён айди,обработанный по данной регулярке ?...Зачем там конец строки =_______=


    RedirectMatch [^0-5] http://www.google.ee

    Этой регулярке вообще насрать,что передавать.

    RedirectMatch /[^0-5]/ http://www.google.ee

    Так тоже.
     
    #217 Велемир, 9 Feb 2009
    Last edited: 9 Feb 2009
  18. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    SetEnvIf REMOTE_ADDR 192.168.8.1 REDIR= redir
    RewriteCond %{REDIR} redir
    RewriteRule ^/$ /nahui.html
    *** Посетители с айпи адресом 192.168.8.1 будут перенаправляться .htaccess ом на страницу nahui.html

    это про ip

    про остальное недопонял просто, чо тебе надо вообще. Изначальную задачу озвучь корректно, кроме своих домыслов
     
  19. Велемир

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

    RewriteRule ^(.*articles\/.*\/.*\/)[^?]+$ http://site.com/$1 [R=permanent,L]

    Так ли нужны здесь круглые скобки и символ + ? Что получится в результате такой подстановки ?

    Вот нашёл ещё...

    RewriteRule ^rotator([0-9])\.xml$ /sand.php?page=st_dor&id=$1 [NE,R,L]

    Почему при запросе: www.site.com/sand.php?page=st_dor&id=0
    www.site.com/sand.php?page=st_dor&id=1
    www.site.com/sand.php?page=st_dor&id=n где n <=9 работают ?

    Я так понял,он должен получить следующий URL:

    www.site.com/sand.php?page=st_dor&id=rotator0.xml
    www.site.com/sand.php?page=st_dor&id=rotator1.xml

    И т.д. до 9 включительно... Не понимаю,где я просчитался.

    ЗЫ: Кстати,тут я нашёл SQL инъекцию,так как защита,как я понял,была основана именно на этом,в следствии чего он не блокировал символы,вызывающие инъекцию,хотя,возможно,это создавалось не в целях самозащиты(Всмысле,они не думали защищаться от взломов таким образом).
     
    #219 Велемир, 11 Feb 2009
    Last edited: 11 Feb 2009
  20. Zedi

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

    Joined:
    6 Jun 2007
    Messages:
    316
    Likes Received:
    120
    Reputations:
    13
    Скобки нужны это точно, а плюсик обозначает что символ будет не один, вообще полезно будет прочитать про мод реврайт
     
Thread Status:
Not open for further replies.