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

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

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

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

    Joined:
    30 Dec 2006
    Messages:
    439
    Likes Received:
    63
    Reputations:
    4
    #Wolf#
    С preg_match_all и делал, смотри выше, я поправил
    НЕ РАБОТАЕТ
     
    #621 Naydav, 4 Sep 2009
    Last edited: 4 Sep 2009
  2. L I G A

    L I G A Banned

    Joined:
    27 Jul 2008
    Messages:
    482
    Likes Received:
    380
    Reputations:
    49
    2#Wolf#
    PHP:
    <?php
    $kod
    =file_get_contents('http://forum.antichat.ru/avatars/avatar52937.gif');
    file_put_contents ('ava.gif',$kod );
    ?>
     
    1 person likes this.
  3. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    PHP:
    <pre>
    <?php 
    $a 
    '<td width="25%"> 
                    <img src="http://www.converse.com/media/product/102740/standard/102740_m.jpg"/> 
                    <br /> 
                    <a href="/products/shoes/sales/102740" title="Pro Leather 1976">Pro Leather 1976</a><br /> 
                    Price: $70 
                </td> 
             
                <td width="25%"> 
                    <img src="http://www.converse.com/media/product/102741/standard/102741_m.jpg"/> 
                    <br /> 
                    <a href="/products/shoes/sales/102741" title="Pro Leather 1976">Pro Leather 1976</a><br /> 
                    Price: $75 
                </td> 
             
                <td width="25%"> 
                    <img src="http://www.converse.com/media/product/508726/standard/508726_m.jpg"/> 
                    <br /> 
                    <a href="/products/shoes/sales/508726" title="Angeles LE">Angeles LE</a><br /> 
                    Price: $55 
                </td>'
    ;
                
    $sPattern '|(.*)<td width="25%">(.*)</td>(.*)|Uis'
    preg_match_all$sPattern$a$aMatches ); 
    print_r($aMatches[2]);      
           
    ?>
    </pre>
     
    1 person likes this.
  4. Naydav

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

    Joined:
    30 Dec 2006
    Messages:
    439
    Likes Received:
    63
    Reputations:
    4
    Pashkela

    Спасибо!

    Блин полный бред, у меня такое же выражение было , не работало :)
    Я уже начал волноватся :)
    `U` в нижнем регистре написал
    Pashkela, СПАСИБО!!!
     
  5. попугай

    попугай Elder - Старейшина

    Joined:
    15 Jan 2008
    Messages:
    1,519
    Likes Received:
    401
    Reputations:
    196
    Как написать htaccess, чтобы при обращении к указанным мной несуществуемым папкам редиректило на скрипт, на другом серваке с передачей имени запрошенной папки? Htaccess не в корне должен быть, а в подпапке.

    Например,
    при обращении к

    http://server.com/papka/lala1/?id=4
    редиректило на http://server2.com/papka2/script.php?data=lala1

    При обращении к

    http://server.com/papka/lala2/?id=9
    на
    http://server2.com/papka2/script.php?data=lala2


    Где, papka и papka2 - реально существующие папки

    и тд.
     
  6. попугай

    попугай Elder - Старейшина

    Joined:
    15 Jan 2008
    Messages:
    1,519
    Likes Received:
    401
    Reputations:
    196
    Сделал так


    Редиректит, но знак вопроса урленкодится почему то, то есть редиректит на
    ,

    а не на


    Почему так?
     
  7. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    попугай
    Code:
    RewriteEngine On
    RewriteRule ^/papka/(.+)/    http://server2.com/papka2/script.php?data=$1  [R,L]
    Или
    Code:
    RewriteEngine On
    RewriteBase /papka
    RewriteRule ^(.+)/?.*    http://server2.com/papka2/script.php?data=$1  [R,L]
     
    _________________________
    #627 Gifts, 5 Sep 2009
    Last edited: 5 Sep 2009
    1 person likes this.
  8. попугай

    попугай Elder - Старейшина

    Joined:
    15 Jan 2008
    Messages:
    1,519
    Likes Received:
    401
    Reputations:
    196
    Ага, спасибо. Сделал так

    Работает
     
  9. Linuxoid

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

    Joined:
    13 Feb 2007
    Messages:
    200
    Likes Received:
    28
    Reputations:
    0
    А как регуляркой выразить md5 хеш? То есть на странице находится много md5 хешей маски [a-f0-9]{32}... Надо их все собрать...
    Регулярки пытаюсь осваивать, но очень много вопросов пока...
     
    #629 Linuxoid, 6 Sep 2009
    Last edited: 6 Sep 2009
  10. wildshaman

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

    Joined:
    16 Apr 2008
    Messages:
    477
    Likes Received:
    483
    Reputations:
    99
    PHP:
    <?php
    $str
    ="тут страница";
    preg_match_all("|([a-f0-9]{32})|is"$str$ret);
    print_r($ret);
    ?>
     
    5 people like this.
  11. imajo.ati

    imajo.ati Banned

    Joined:
    21 Feb 2008
    Messages:
    232
    Likes Received:
    62
    Reputations:
    8
    как из текста удалить все комментарии вида /* */ ?
    комментарии могут быть такими: /** /* /*** * /*ф* ***/

    кое-что уже пробовал:

    ~/\*{2,}/~
    ~/\*+(.*?)*\*+/~s

    первое удаляет это: /****/ второе удаляет все остальные случаи..
    но как-то я не совсем уверен в 100% работоспособности

    может кто подскажет способ получше?
    и объясните пожалуйста, что означает ".*?" ?
     
  12. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    imajo.ati
    PHP:
    preg_replace('#\s/\*[\s\S]*\*/\s#U','',$str);
    http://ru.wikipedia.org/wiki/Regexp - читать раздел "жадная и ленивая квантификация"
     
    _________________________
    #632 Gifts, 7 Sep 2009
    Last edited: 7 Sep 2009
    2 people like this.
  13. imajo.ati

    imajo.ati Banned

    Joined:
    21 Feb 2008
    Messages:
    232
    Likes Received:
    62
    Reputations:
    8
    PHP:
    <?php

    $str 
    '/* hello */ world! /* 123 */';
    echo 
    preg_replace('#\s/\*[\s\S]*\*/\s#','',$str);

    ?>
    твой регэксп не работает, не удаляет ничего.

    за жадную квантификацию спасибо, уже читаю.
     
  14. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    imajo.ati Перед и после - желательно чтобы стоял пробельный символ:
    PHP:
    $str ' asddasd asd asd sd sads ad asdas a /* hello */ world! /* 123 */ asds adsa dasdas das';
    echo 
    preg_replace('#\s/\*[\s\S]*?\*/\s#','',$str);
    Но можно и без него ессесн:
    PHP:
    $str '/* hello */ world! /* 123 */';
    echo 
    preg_replace('#/\*[\s\S]*?\*/#','',$str);
     
    _________________________
  15. FireFenix

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

    Joined:
    3 Jun 2009
    Messages:
    390
    Likes Received:
    115
    Reputations:
    23
    PHP:
    <?php

    $text 
    '
    /*
    абабаббабаб
    */
    тут код проги
    /** ещё один камент **/
    текст
    /***
     ещё один глупый камент 
     ***/
    здесь могла быть ваша реклама!'
    ;

    $result preg_replace('/(\/\*.*?\*\/)*/ims'''$text);

    echo(
    $result);

    ?>
    мой вариант +)
     
    1 person likes this.
  16. astrologer

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

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    Тебе нужен парсер. Если, конечно, в твои планы не входит бить код, потому что регулярные выражения всё равно будут фейлить.
    Пример:
    Code:
    $pictures = glob('images[COLOR=Gray]/*');
    /* Комментарий */[/COLOR]
    process($pictures);
     
  17. imajo.ati

    imajo.ati Banned

    Joined:
    21 Feb 2008
    Messages:
    232
    Likes Received:
    62
    Reputations:
    8
    astrologer,
    спасибо за замечание, я уже был в курсе этого, когда просил регулярное выражение.

    в планы входит сначала заменить все строки в тексте на что-то такое:
    %STRING_000001_(md5_заменённой_строки)_(случайное_число_прохода_парсера)%
    а потом удалить все комментарии.

    может быть выскажешь свои мысли по этому поводу? будет ли это работать?
     
  18. astrologer

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

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    Не получится, причём по той же причине (выяснение которой, как всегда, остается читателю).

    P.S.
    Code:
    ~/[*](?:[^*]++|[*](?![*]))*[*]/~
     
    1 person likes this.
  19. KaMiKadZe

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

    Joined:
    24 Feb 2006
    Messages:
    163
    Likes Received:
    35
    Reputations:
    19
    PHP:
    $str "http://localhost/#qwerty=text#aaa22";
    preg_match_all ('/=(.*)#aaa(.*)/',$str,$arr);
    Даст
    text
    22

    Но если строка $str = "http://localhost/#qwerty=text";
    Ничего не выдаст, как сделать так чтобы выдавало? =)
     
  20. FireFenix

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

    Joined:
    3 Jun 2009
    Messages:
    390
    Likes Received:
    115
    Reputations:
    23
    PHP:
    <?php

    $str 
    "http://localhost/#qwerty=text"

    preg_match_all ('/=(.*)#aaa(.*)|=(.*)/',$str,$arr);

    print_r($arr);

    ?> 
    $match[1] и $match[2] - где 2 аргумента
    $match[3] - где 1 аргумент
     
    2 people like this.
Thread Status:
Not open for further replies.