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

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

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

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

    Joined:
    7 Aug 2008
    Messages:
    378
    Likes Received:
    69
    Reputations:
    20
    Помогите составить регулярку, чтбы в шаблоне можно было использовать php код
    PHP:
    $this->template preg_replace'/\{php\}(.*?)\{\/php\}/is',eval("$1"), $this->template); 
    Code:
    Parse error: syntax error, unexpected T_LNUMBER, expecting T_VARIABLE or '$' in /var/www/system/templates.class.php(40) : eval()'d code on line 1
    
     
  2. d_x

    d_x Banned

    Joined:
    25 Mar 2008
    Messages:
    558
    Likes Received:
    650
    Reputations:
    210
    PHP:
    $this->template preg_replace'/\{php\}(.*?)\{\/php\}/ise',"eval('\\1')"$this->template);  
     
    1 person likes this.
  3. SeNaP

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

    Joined:
    7 Aug 2008
    Messages:
    378
    Likes Received:
    69
    Reputations:
    20
    Code:
    Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /var/www/system/templates.class.php(40) : regexp code(1) : eval()'d code on line 1
    
    Parse error: syntax error, unexpected $end in /var/www/system/templates.class.php(40) : regexp code(1) : eval()'d code on line 1
    
    :(
     
  4. d_x

    d_x Banned

    Joined:
    25 Mar 2008
    Messages:
    558
    Likes Received:
    650
    Reputations:
    210
    PHP:
    <?php
    $tpl
    =<<<HERE
    наш пхп код (тут строка задом наперед): {php}return strrev('qwe');{/php}
    <br>
    а вот еще тест (дата и время): {php}return date('d.m.Y H:i:s');{/php}
    HERE;

    $tpl preg_replace('/\{php\}(.*?)\{\/php\}/ise'"eval('\\1')",  $tpl);

    print 
    $tpl;
    ?>
     
    2 people like this.
  5. programming

    programming New Member

    Joined:
    26 Aug 2009
    Messages:
    190
    Likes Received:
    3
    Reputations:
    0
    Как составить регулярку, которая бы удаляла теги B и всё, что находится между ними?
     
    #1005 programming, 24 Mar 2010
    Last edited: 24 Mar 2010
  6. Compton

    Compton Member

    Joined:
    31 Jan 2010
    Messages:
    290
    Likes Received:
    25
    Reputations:
    0
    PHP:
    <?php
    $text
    ='trololo <b>ololo</b>';
    echo 
    preg_replace('/<b>.*<\/b>/',''$text);
    ?>
     
  7. programming

    programming New Member

    Joined:
    26 Aug 2009
    Messages:
    190
    Likes Received:
    3
    Reputations:
    0
    Спасибо.
     
  8. Tesson

    Tesson Banned

    Joined:
    27 Dec 2009
    Messages:
    164
    Likes Received:
    43
    Reputations:
    0
    Как сделать через .htaccess
    это name.com/images/foto.gif
    на name.com/foto.gif ?
     
  9. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Code:
    RewriteRule ^(.*\.gif)$ /photo/$1
    
    либо
    Code:
    RewriteRule ^photo/(.*\.gif)$ /$1
    
    смотря, что именно нужно
     
  10. SeNaP

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

    Joined:
    7 Aug 2008
    Messages:
    378
    Likes Received:
    69
    Reputations:
    20
    Так не работает
    xhtml/6.info?ip
    Code:
    RewriteRule ^(xhtml|html)/([0-9]+)?((\.)(([a-z]+)))?([COLOR=DarkRed](\?)[/COLOR](([a-z]+)))?(/)?$		/index.php?v=$1\&mod=$5\&id=$2\&item=$9\&%{QUERY_STRING}
    
    а, когда подставляю точку

    Code:
    RewriteRule ^(xhtml|html)/([0-9]+)?((\.)(([a-z]+)))?([COLOR=DarkRed](\.)[/COLOR](([a-z]+)))?(/)?$		/index.php?v=$1\&mod=$5\&id=$2\&item=$9\&%{QUERY_STRING}
    
    xhtml/6.info.ip
    Всё работает :confused:
    и как еще сделать, чтобы нельзя было обратиться по такому адресу?
    Code:
    xhtml/?mod=info&id=6&item=ip
    
    Помогите :(
     
    #1010 SeNaP, 27 Mar 2010
    Last edited: 27 Mar 2010
  11. c0rp$e

    c0rp$e Elder - Старейшина

    Joined:
    5 Dec 2003
    Messages:
    206
    Likes Received:
    37
    Reputations:
    -5
    есть скрипт,
    парсит значения полей icq и майл.

    PHP:
    <?php
    set_time_limit
    (0);
    for(
    $i=5000000$i>1$i--) {
    $res file_get_contents('http://*************'.$i);

    preg_match('#<b>ICQ</b>: (.*?)<br />#i'$res$m);
    $icq = (isset($m[1])) ? $m[1]."\r\n" '';
    if(
    $icq) {$fp fopen('i.log''a'); fwrite($fp$i.':'.$icq);}

    preg_match('#<b>E-mail</b>: (.*?)<br />#i'$res$m);
    $mail = (isset($m[1])) ? $m[1]."\r\n" '';
    if(
    $mail) {$fp fopen('m.log''a'); fwrite($fp$i.':'.$mail);}
    }
    ?>


    вопрос, какие должны быть значения preg_match
    если нужно парсить в html коде:
    1)
    PHP:
    t=имя Вася;>
    (нужно выпарсить слово "Вася")


    PHP:
    &; text=пошел гулять;>
    (нужно выпарсить слово "пошел гулять"
    но с учетом этого "&; text=", т.к если парсить просто по "text=" то в коде другие ненужны поля есть

    )
     
  12. InfectedM

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

    Joined:
    4 Nov 2007
    Messages:
    155
    Likes Received:
    12
    Reputations:
    0
    подскажите плиз!
    есть текст:
    Нужно найти все nserver тоесть:
    qwe1.server.ru.
    qwe2.server.ru.

    вот что накатал:
    RegExp.Expression := 'nserver:\s(.*)\.[a-zA-z]*\.[a-zA-Z]{2,5}(.+?)\.';

    Просьба указать ошибку в моем примере ,а не писать свою,ибо нужно разобраться :)
    Ps после \s нужно ставить звездочку или \s ищет любое кол-во пробелов?
     
  13. Omegа

    Omegа Member

    Joined:
    16 Dec 2009
    Messages:
    27
    Likes Received:
    11
    Reputations:
    5
    InfectedM, На PHP это выглядит примерно так:
    Code:
    <?php
    $text = 'nserver: qwe1.server.ru.
    nserver: qwe2.server.ru.
    mail: server.ru
    site: server.ru';
    preg_match_all('~nserver: (.*)~i', $text, $regs);
    print_r($regs[1]);
    ?>
    Твой вариант впринципе почти правильный, но :
    Зачем перед последней точкой нужно (.+?) ?
    Почему домен третьего уровня может быть из любых символов, а первого и второго из [a-zA-Z] ?
    Обязательно ли домен должен быть из трёх уровней?

    P.S. Если хочешь разобраться - почитай книжки или статьи по регуляркам
     
    #1013 Omegа, 27 Mar 2010
    Last edited: 27 Mar 2010
  14. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    InfectedM Ошибка из-за (.+?)\. Имя домена верхнего уровня (в данном случае .ru) входит в предыдущую подмаску. .+ забирает любое количество символов (кроме символа перевода строки) , но не менее одного, а дальше регулярка пытается найти обычную точку и не может
     
    _________________________
    1 person likes this.
  15. SeNaP

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

    Joined:
    7 Aug 2008
    Messages:
    378
    Likes Received:
    69
    Reputations:
    20
    на сайте есть реальная дирктория, например /forum/, как сказать мод-реврайту, чтобы он не обрабатывал этот конкретный урл?
     
  16. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Гляньте в сторону флага F
     
  17. LASS0

    LASS0 Member

    Joined:
    3 Jan 2009
    Messages:
    0
    Likes Received:
    17
    Reputations:
    1
    как сделать чтобы логины записывались в 1й массив, а пароли во 2й

    логин1:пароль1
    логин2:пароль2
    логин3:пароль3

    както так.. но не работает :(
    PHP:
    $login split("#:(.*?)\n#"$text);
     
    $pass split("#\n(.*?):#"$text);
     
  18. Compton

    Compton Member

    Joined:
    31 Jan 2010
    Messages:
    290
    Likes Received:
    25
    Reputations:
    0
    PHP:
    <?php
    $text
    ='логин1:пароль1
    логин2:пароль2
    логин3:пароль3'
    ;
    preg_match_all('/(.*):(.*)/i',$text,$a);
    print_r($a[1]);/// 1-логин,2-пароль
    ?>
     
    1 person likes this.
  19. #Wolf#

    #Wolf# Elder - Старейшина

    Joined:
    26 Mar 2008
    Messages:
    375
    Likes Received:
    166
    Reputations:
    16
    http://paste2.org/p/747648
    надо выпарсить value и текст исключительно из
    <select name="cid" onChange="checkRubr(this.value,'sel2');">
    ...
    ..
    .
    </select>
    поэтому вариант типа: #<option value="([0-9]+)">(.*+)#i
    не подойдет.
     
  20. Compton

    Compton Member

    Joined:
    31 Jan 2010
    Messages:
    290
    Likes Received:
    25
    Reputations:
    0
    Wolf
    PHP:
    <?php
    $text
    ='<option value="10">гостинки
    <option value="11">1-комн. кв.
    <option value="12">2-комн. кв.
    <option value="13">3-комн. кв.' 
    ;
    preg_match_all('/<option value="(.+)">.+\r\n/',$text,$a);
    print_r($a);
    ?>
     
Thread Status:
Not open for further replies.