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

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

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

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

    Joined:
    8 Dec 2008
    Messages:
    395
    Likes Received:
    79
    Reputations:
    16
    Flisk,
    PHP:
    $in "<img src='capcha.php?s=asfwetwertert'";
    $pattern "/\(<img src=\'capcha.php?s\[S+]\'/";
    preg_match($pattern$in$out);
    var_dump($out);
     
  2. Flisk

    Flisk Member

    Joined:
    4 Aug 2010
    Messages:
    147
    Likes Received:
    8
    Reputations:
    -2
    AnGeI, у меня почему-то не парсит и все. Может посмотрите весь сорс страницы? http://paste.org.ru/?xa5azm - вот тут, 264 строка.

    Да и ваш код дает у меня
    array
    empty
     
    #1662 Flisk, 2 Jan 2012
    Last edited: 2 Jan 2012
  3. Skofield

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

    Joined:
    27 Aug 2008
    Messages:
    960
    Likes Received:
    392
    Reputations:
    58
    Flisk
    PHP:
    preg_match("#<img src='capcha\.php\?s=(\w+)'#"$str$match); 
    print_r($match); 
     
  4. Flisk

    Flisk Member

    Joined:
    4 Aug 2010
    Messages:
    147
    Likes Received:
    8
    Reputations:
    -2
    Skofield,спасибо.

    Подскажите пожалуйста еще:
    Есть строка вида $str1 = "Hair.Master.v4.3547158.Full.rar";
    Мне надо заменить все точки на пробелы, НО - только до буквы v,после которой идет цифра.
    У меня не получается вообще никак.

    Пробовал $a = preg_replace("/\.*v{d}/","/[\s]/",$str1); , но ничего. :confused:
     
    #1664 Flisk, 3 Jan 2012
    Last edited: 3 Jan 2012
  5. Skofield

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

    Joined:
    27 Aug 2008
    Messages:
    960
    Likes Received:
    392
    Reputations:
    58
    Flisk
    PHP:
    <?php
    $str1 
    "Hair.Master.v4.3547158.Full.rar";
    $x 0;
    while (
    $str1[$x] != "v")
    {
        
    $c .= $str1[$x];
        
    $x++;
    }
    $res str_replace($cstr_replace("."" "$c), $str1);
    echo 
    $res;
    ?>
     
    #1665 Skofield, 3 Jan 2012
    Last edited: 3 Jan 2012
  6. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Flisk
    PHP:
    $str1 "Hair.Master.v4.3547158.Full.rar";
    $arr explode('v'$str12);
    $arr[0] = str_replace('.'' '$arr[0]);
    echo 
    implode('v'$arr);
    Skofield str_replace на каждой итерации? Тогда уж так:
    PHP:
    <?php
    $str1 
    "Hair.Master.v4.3547158.Full.rar";
    $out '';
    $x 0;
    while (
    $str1[$x] != "v")
    {
        
    $c = ($str1[$x] == '.') ? ' ' $str1[$x];
        
    $out .= $c;
        
    $x++;
    }
    echo 
    $out.substr($str1$x);
    ?> 
     
    _________________________
    #1666 Gifts, 3 Jan 2012
    Last edited: 3 Jan 2012
  7. Flisk

    Flisk Member

    Joined:
    4 Aug 2010
    Messages:
    147
    Likes Received:
    8
    Reputations:
    -2
    Skofield, Gifts
    Спасибо, все работает, но есть один минус: если буква v встречается где-то раньше, тогда условие не выполняется полностью. Пример - строка Caphyon.Advanced.Installer.Enterprise.v7.7.
    В ней только первая точка убирается, а дальше не идет.

    upd. вроде решили, другим вариантом (Каими)

    PHP:
    $str1 "Caphyon Advanced Installer Enterprise.v7.7.";
    preg_match('/^(.+?)(v\d.+)$/'$str1$m);
    $m[1] = str_replace('.'' '$m[1]);
    print 
    $m[1].$m[2];
     
    #1667 Flisk, 3 Jan 2012
    Last edited: 3 Jan 2012
  8. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    Если ты решаешь свою проблему регулярным выражением, значит у тебя две проблемы. ©
     
  9. Skofield

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

    Joined:
    27 Aug 2008
    Messages:
    960
    Likes Received:
    392
    Reputations:
    58
    оу, точно, извиняюсь, хотел вынести за цикл.
    наверно еще не отошел от нг (
     
  10. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,174
    Likes Received:
    1,157
    Reputations:
    202
    имхо тут без регулярки никак а если как-то то затраты на операции будут "дороже" нежели одно простое (!!) регулярное выражение.
     
  11. Skofield

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

    Joined:
    27 Aug 2008
    Messages:
    960
    Likes Received:
    392
    Reputations:
    58
    PHP:
    <?php
    $str1 
    "Caphyon.Advanced.Installer.Enterprise.v7.7.";
    for (
    $i 0$j 1$x 2$i <= strlen($str1); $i++, $j++, $x++)
    {
        if (
    $str1{$i} == "v" and (int)$str1{$j} and $str1{$x} == ".")
        break;
        
    $a .= ($str1{$i} == '.') ? ' ' $str1{$i};
    }
    echo 
    $a.substr($str1$i); 
    ?>
    Извиняюсь, но не спится, поэтому говнокодю все подряд :(
     
    #1671 Skofield, 6 Jan 2012
    Last edited: 6 Jan 2012
  12. sl1k

    sl1k Member

    Joined:
    31 Jul 2009
    Messages:
    106
    Likes Received:
    26
    Reputations:
    5
    Есть .htacces с таким вот перенаправлением для wap трафа
    PHP:
    RewriteEngine   on
    RewriteCond    
    %{HTTP_USER_AGENT}  (android|midp|j2me|symbian|series60|symbos|windowsmobile|windowsce|ppc|smartphone|blackberry|mtk)  [NC]
    RewriteCond    %{HTTP_USER_AGENT}  !(accoona|ia_archiver|antabot|askjeeves|baidu|eltaindexer|feedfetcher|gamespy|gigabot|googlebot|gsa-crawler|grub-client|gulper|slurp|mihalism|msnbot|worldindexer|ooyyo|pagebull|scooter|w3c_validator|jigsaw|webalta|yahoofeedseeker|mmcrawler|yandexbot|yandeximages|yandexvideo|yandexmedia|yandexblogs|yandexaddurl|yandexfavicons|yandexdirect|yandexmetrika|yandexcatalog|yandexnews|yandeximageresizer)    [NC]
    RewriteRule    (.*)    http://operafile.net/u/870    [L,R=302]
    Как сделать запрет перенапраление для определенных ип, тоесть даже если они будут заходить с телефона, чтоб попадали на норм сайт.
    Спасибо.
     
  13. SamDAY

    SamDAY New Member

    Joined:
    28 Aug 2011
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Подскажите регулярное выражение в нотпаде:\

    есть слова

    и.тд.


    нужн очто бы стало так

     
  14. k0tt0d

    k0tt0d Member

    Joined:
    19 Nov 2009
    Messages:
    52
    Likes Received:
    20
    Reputations:
    4
    \n
    заменяем на
    "\n"
     
  15. Skofield

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

    Joined:
    27 Aug 2008
    Messages:
    960
    Likes Received:
    392
    Reputations:
    58
    SamDAY
    Найти: (.*)
    Заменить на: "\1"
     
  16. sl1k

    sl1k Member

    Joined:
    31 Jul 2009
    Messages:
    106
    Likes Received:
    26
    Reputations:
    5
    нужно на php сделать регулярку для перенаправления wap трафа вида

    if строка сожержит следующие подстроки (android|midp|j2me|symbian|series 60|symbos|windows mobile|windows ce|ppc|smartphone|blackberry|mtk ) действие ....
    Спасибо.

    upd.
    так правильно ?
    PHP:
    if(preg_match('/(android|midp|j2me|symbian|series 60|symbos|windows mobile|windows ce|ppc|smartphone|blackberry|mtk)/i',$u))
     
    #1676 sl1k, 16 Jan 2012
    Last edited: 16 Jan 2012
  17. pavl1k_fan@mail.ru

    [email protected] New Member

    Joined:
    3 Jul 2009
    Messages:
    0
    Likes Received:
    1
    Reputations:
    0
    Есть файл с icq номерками
    Как организовать поиск по маскам (xy, xyz, xyzzz) с помощью php и регулярок. Т.е. искать нужно 3 одинаковые цифра подряд в целом номере. Или наоборот 3 разные.
    проблема имеенно в регулярке, натолкните на мысль %)
     
  18. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    [email protected]
    PHP:
    $uin '12344456789';
    if (
    preg_match('~^.*(\d)\1{2}.*$~'$uin)) echo 'Три подряд';
     
    _________________________
    1 person likes this.
  19. Furi

    Furi New Member

    Joined:
    25 May 2011
    Messages:
    5
    Likes Received:
    0
    Reputations:
    0
    Допустим есть htaccess след. содержания:
    Code:
    RewriteEngine on 
    
    RewriteBase /
    
    <Files .*>
    	Order Deny,Allow
    	Deny From All
    </Files>
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    
    RewriteRule ^(mail|settings)(.*)$ index.php?route=$0 [L]
    RewriteRule ^([a-zA-Z0-9]+)(/?)$ index.php?route=profile/view/$0 [L]
    Последнее правило реализует ссылку вида:
    http://domian.com/имя_пользователя

    Вопрос в чем: Есть системные папки, которые лежат в корне. Например, system, application и т.п.
    Как сделать чтобы при наборе
    http://domian.com/system (с / и без)

    Показывалась не папка, и не 403, а именно профиль пользователя с таким именем?
     
  20. phpdreamer

    phpdreamer Member

    Joined:
    26 Jul 2009
    Messages:
    522
    Likes Received:
    86
    Reputations:
    19
    Furi, строчка из htaccess в Kohana framework:

    Code:
    # Protect application and system files from being viewed
    RewriteRule ^(application|modules|system) - [F,L]
    вставь это правило выше правила для пользователей
     
Thread Status:
Not open for further replies.