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

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

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

    DTW Banned

    Joined:
    11 May 2008
    Messages:
    221
    Likes Received:
    52
    Reputations:
    11
    Как заменить на подчеркивание

    Например есть

    PHP:

    $text 
    '<div><b>Что тут написано</b></div>';

    $rep ='<u>';

    $sablon '/<br>/is';

    $rezult preg_replace($sablon,$rep,$text);

    echo 
    $rezult;
    чтоб было так

    PHP:

    $text 
    '<div><u>Что тут написано</u></div>';

    как это сделать одной фунцией ...
     
  2. PaCo

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

    Joined:
    6 Feb 2008
    Messages:
    436
    Likes Received:
    138
    Reputations:
    25
    Имхо здеся не нужна регулярка:
    PHP:
    <?php
    $text 
    '<div><b>Что тут написано</b></div>';
    $rezult strtr($text,array('<b>'=>'<u>','</b>'=>'</u>'));
    echo 
    $rezult;
    ?>
     
  3. Велемир

    Joined:
    19 Jun 2006
    Messages:
    1,123
    Likes Received:
    96
    Reputations:
    -25
    Эм...так задумано ?

    Code:
    
    $x = 'fuckinstrin';
    
    if(preg_match('#[s]....#',$x,$matches)) {
    
    print_r($matches);
    
    }
    
    
    Сначала проверяется каждый символ по куску шаблона .Совпал один символ.Затем идут точки,которые соответствуют любому символу.Так почему проверка начинается не с начала,а с того места,где произошло первое совпадение ? Шаблон сработал правильно,но почему-то не так,как я ожидал))(Ожидалось sfuck)
     
  4. PaCo

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

    Joined:
    6 Feb 2008
    Messages:
    436
    Likes Received:
    138
    Reputations:
    25

    Ну во первых [] - во сновном самое логичное применять для символьго класса, у тебя 1 символ,
    во вторых если ..... - жесть, {4} то есть так

    #s.{4}#

    , ну и в третих у тебя никак не будет sfuck потому как у тебя я не наблюдаю ПЕРЕД fuckinstrin s , у тебя будет strin, регулярное выражения будет обрабатываться с начало, слева на право без возратов назад.
     
  5. Велемир

    Joined:
    19 Jun 2006
    Messages:
    1,123
    Likes Received:
    96
    Reputations:
    -25
    Это всё,что я хотел узнать :))).Что касается ....,то это было для примера.Конечно же,целесообразнее использовать .{4},но ведь ....=.{4},не так ли ? Также,как и [символ] = символ.По крайней мере,я отличий не наблюдал.

    ЗЫ: Диву даюсь,что так быстро получил ответ на вопрос :):).Лови плюсики)))
     
  6. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    m0Hze
    PHP:
    $new=preg_replace('~old(.*)~','new$1',$str);
     
    _________________________
  7. Fak1r

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

    Joined:
    3 Jun 2007
    Messages:
    36
    Likes Received:
    2
    Reputations:
    0
    Есть такой html код

    Code:
    <th width="80">
    </th>
    <th width="125" style='white-space: nowrap;'>
    <a style="cursor:pointer" onclick="javascript:doit(6, 1, 61, 9, 1, 1);"><img src="http://uni9.ogame.ru/evolution/img/e.gif" border="0" alt="Шпионаж" title="Шпионаж" /></a>
    <a href="index.php?page=writemessages&session=e104001d5a6b&messageziel=142200"><img src="" border="0" alt="Написать сообщение" title="Написать сообщение" /></a>
    <a href="index.php?page=buddy&session=e104001d5a6b&action=7&buddy_id=142200"><img src="http://uni9.ogame.ru/evolution/img/b.gif" border="0" alt="Предложение подружиться" title="Предложение подружиться" /></a>
    </th>
    </tr>
        <tr>
        <th width="30">
          <a href="#"  tabindex="9" >[COLOR=Navy][B]10[/B][/COLOR]</a>
        </th>
        <th width="30">
          <a style="cursor:pointer" onmouseover='return overlib("<table width=240><tr><td class=c colspan=2 >Планета amber [1:61:10]</td></tr><tr><th width=80 ><img src=http://uni9.ogame.ru/evolution/planeten/small/s_wasserplanet01.jpg height=75 width=75 /></th><th align=left ><a href=# onclick=doit(6,1,61,10,1,1) >Шпионаж</a><br><br /><a href=index.php?page=flotten1&session=e104001d5a6b&galaxy=1&system=61&planet=10&planettype=1&target_mission=1 m>Атака</a><br /><a href=index.php?page=flotten1&session=e104001d5a6b&galaxy=1&system=61&planet=10&planettype=1&target_mission=5 >Удерживать</a><br /><a href=index.php?page=flotten1&session=e104001d5a6b&galaxy=1&system=61&planet=10&planettype=1&target_mission=3 >Транспорт</a><br /></th></tr></table>", STICKY, MOUSEOFF, DELAY, 750, CENTER, OFFSETX, -40, OFFSETY, -40 );' onmouseout="return nd();">
          <img src="http://uni9.ogame.ru/evolution/planeten/small/s_wasserplanet01.jpg" height="30" width="30"/></a>
    </th>
    <th width="130" style='white-space: nowrap;'>
    amber</th>
    <th width="30" style='white-space: nowrap;'>
       </th>
        <th width="30">
    
     
       </th>
        <th width="150">
    
             <a style="cursor:pointer" 	onmouseover="return overlib('<table width=240 ><tr><td class=c >Игрок amberios. Место в рейтинге - 1264</td></tr><th><table><tr><td><a href=index.php?page=writemessages&session=e104001d5a6b&messageziel=143212 >Написать сообщение</a></td></tr><tr><td><a href=index.php?page=buddy&session=e104001d5a6b&action=7&buddy_id=143212 >Предложение подружиться</a></td></tr><tr><td><a href=index.php?page=statistics&session=e104001d5a6b&start=1201 >Статистика</a></td></tr></table></th></table>', STICKY, MOUSEOFF, DELAY, 750, CENTER, OFFSETY, -40 );" onmouseout="return nd();">
    		<span class="inactive">[COLOR=Navy][B]Lightsinger[/B][/COLOR]</span></a>
    
    (<span class='inactive'>i</span>)
    </th>
    
    Нужна регулярка которая вытаскивала бы выделенный текст.

    Пробывал составить сам получилось следующее:
    /="\d+" >(\d+)<\/a>.*\"inactive\">([[:graph:]]+)<\/span><\/a>/is
    регулярка работает, но если кусков вышеприведенного html кода несколько, то вытаскивается только последнее совпадение с регуляркой.
     
  8. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    PHP:
    <pre>
    <?php 
    @set_time_limit(0); 
    @
    ini_set("display_errors","1");

    $in = <<<HTML

    <th width="80">
    </th>
    <th width="125" style='white-space: nowrap;'>
    <a style="cursor:pointer" onclick="javascript:doit(6, 1, 61, 9, 1, 1);"><img src="http://uni9.ogame.ru/evolution/img/e.gif" border="0" alt="Шпионаж" title="Шпионаж" /></a>
    <a href="index.php?page=writemessages&session=e104001d5a6b&messageziel=142200"><img src="" border="0" alt="Написать сообщение" title="Написать сообщение" /></a>
    <a href="index.php?page=buddy&session=e104001d5a6b&action=7&buddy_id=142200"><img src="http://uni9.ogame.ru/evolution/img/b.gif" border="0" alt="Предложение подружиться" title="Предложение подружиться" /></a>
    </th>
    </tr>
        <tr>
        <th width="30">
          <a href="#"  tabindex="9" >10</a>
        </th>
        <th width="30">
          <a style="cursor:pointer" onmouseover='return overlib("<table width=240><tr><td class=c colspan=2 >Планета amber [1:61:10]</td></tr><tr><th width=80 ><img src=http://uni9.ogame.ru/evolution/planeten/small/s_wasserplanet01.jpg height=75 width=75 /></th><th align=left ><a href=# onclick=doit(6,1,61,10,1,1) >Шпионаж</a><br><br /><a href=index.php?page=flotten1&session=e104001d5a6b&galaxy=1&system=61&planet=10&planettype=1&target_mission=1 m>Атака</a><br /><a href=index.php?page=flotten1&session=e104001d5a6b&galaxy=1&system=61&planet=10&planettype=1&target_mission=5 >Удерживать</a><br /><a href=index.php?page=flotten1&session=e104001d5a6b&galaxy=1&system=61&planet=10&planettype=1&target_mission=3 >Транспорт</a><br /></th></tr></table>", STICKY, MOUSEOFF, DELAY, 750, CENTER, OFFSETX, -40, OFFSETY, -40 );' onmouseout="return nd();">
          <img src="http://uni9.ogame.ru/evolution/planeten/small/s_wasserplanet01.jpg" height="30" width="30"/></a>
    </th>
    <th width="130" style='white-space: nowrap;'>
    amber</th>
    <th width="30" style='white-space: nowrap;'>
       </th>
        <th width="30">

     
       </th>
        <th width="150">

             <a style="cursor:pointer"     onmouseover="return overlib('<table width=240 ><tr><td class=c >Игрок amberios. Место в рейтинге - 1264</td></tr><th><table><tr><td><a href=index.php?page=writemessages&session=e104001d5a6b&messageziel=143212 >Написать сообщение</a></td></tr><tr><td><a href=index.php?page=buddy&session=e104001d5a6b&action=7&buddy_id=143212 >Предложение подружиться</a></td></tr><tr><td><a href=index.php?page=statistics&session=e104001d5a6b&start=1201 >Статистика</a></td></tr></table></th></table>', STICKY, MOUSEOFF, DELAY, 750, CENTER, OFFSETY, -40 );" onmouseout="return nd();">
            <span class="inactive">Lightsinger</span></a>

    (<span class='inactive'>i</span>)
    </th>
    -------------------------------------------------------------------------------------------------------
    ДУБЛЬ:
    -------------------------------------------------------------------------------------------------------
    <th width="80">
    </th>
    <th width="125" style='white-space: nowrap;'>
    <a style="cursor:pointer" onclick="javascript:doit(6, 1, 61, 9, 1, 1);"><img src="http://uni9.ogame.ru/evolution/img/e.gif" border="0" alt="Шпионаж" title="Шпионаж" /></a>
    <a href="index.php?page=writemessages&session=e104001d5a6b&messageziel=142200"><img src="" border="0" alt="Написать сообщение" title="Написать сообщение" /></a>
    <a href="index.php?page=buddy&session=e104001d5a6b&action=7&buddy_id=142200"><img src="http://uni9.ogame.ru/evolution/img/b.gif" border="0" alt="Предложение подружиться" title="Предложение подружиться" /></a>
    </th>
    </tr>
        <tr>
        <th width="30">
          <a href="#"  tabindex="9" >10</a>
        </th>
        <th width="30">
          <a style="cursor:pointer" onmouseover='return overlib("<table width=240><tr><td class=c colspan=2 >Планета amber [1:61:10]</td></tr><tr><th width=80 ><img src=http://uni9.ogame.ru/evolution/planeten/small/s_wasserplanet01.jpg height=75 width=75 /></th><th align=left ><a href=# onclick=doit(6,1,61,10,1,1) >Шпионаж</a><br><br /><a href=index.php?page=flotten1&session=e104001d5a6b&galaxy=1&system=61&planet=10&planettype=1&target_mission=1 m>Атака</a><br /><a href=index.php?page=flotten1&session=e104001d5a6b&galaxy=1&system=61&planet=10&planettype=1&target_mission=5 >Удерживать</a><br /><a href=index.php?page=flotten1&session=e104001d5a6b&galaxy=1&system=61&planet=10&planettype=1&target_mission=3 >Транспорт</a><br /></th></tr></table>", STICKY, MOUSEOFF, DELAY, 750, CENTER, OFFSETX, -40, OFFSETY, -40 );' onmouseout="return nd();">
          <img src="http://uni9.ogame.ru/evolution/planeten/small/s_wasserplanet01.jpg" height="30" width="30"/></a>
    </th>
    <th width="130" style='white-space: nowrap;'>
    amber</th>
    <th width="30" style='white-space: nowrap;'>
       </th>
        <th width="30">

     
       </th>
        <th width="150">

             <a style="cursor:pointer"     onmouseover="return overlib('<table width=240 ><tr><td class=c >Игрок amberios. Место в рейтинге - 1264</td></tr><th><table><tr><td><a href=index.php?page=writemessages&session=e104001d5a6b&messageziel=143212 >Написать сообщение</a></td></tr><tr><td><a href=index.php?page=buddy&session=e104001d5a6b&action=7&buddy_id=143212 >Предложение подружиться</a></td></tr><tr><td><a href=index.php?page=statistics&session=e104001d5a6b&start=1201 >Статистика</a></td></tr></table></th></table>', STICKY, MOUSEOFF, DELAY, 750, CENTER, OFFSETY, -40 );" onmouseout="return nd();">
            <span class="inactive">Lightsinger</span></a>

    (<span class='inactive'>i</span>)
    </th>

    HTML;

    preg_match_all('|<a href=.*tabindex=.*>(.*)</a>|'$in,$res1);
    preg_match_all('|<span class=.*>(.*)</span></a>|'$in,$res2);

    for(
    $i=0;$i<count($res1[1]);$i++) echo "{$res1[1][$i]}\n";
    for(
    $z=0;$z<count($res2[1]);$z++) echo "{$res2[1][$z]}\n";

    ?>
    </pre>
     
  9. .:EnoT:.

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

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    Я как всегда сторонник обойтись одной регуляркой))

    PHP:
    preg_match_all('#(tabindex="9"[\s]?|class="inactive")>([0-9]*|[^<]*)[</span>]*</a>#s'$str$out);
    print_r($out);
    Результат:
    Code:
    [2] => Array
            (
                [0] => 10
                [1] => Lightsinger
            )
    
     
    2 people like this.
  10. #Wolf#

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

    Joined:
    26 Mar 2008
    Messages:
    375
    Likes Received:
    166
    Reputations:
    16
    подскажите как отсеять все символы кроме :
    A-Z
    a-z
    0-9
    . , - * ( )
    и точно так же с русским алфавитом.
    и второй вопрос по мод_реврайту
    что имеем:
    http://site.ru/index.php?page=x и на этой же странице параметр id
    что хотим: http://site.ru/page/x и так же с id
    ээмм а в скриптах не надо будет менять ссылки?($pervpage = '<a title="В начало" href= ./index.php?page=1>';)
     
    #290 #Wolf#, 11 Mar 2009
    Last edited: 11 Mar 2009
  11. .:EnoT:.

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

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    1)
    Так:
    PHP:
    $str 'vbgmhdg*ere(bmdtjkddv0964,32257));№\84Рsdgdgbs !@@3ё+_):;№';

    preg_match_all('#([a-z0-9-\.,\*\(\)]?)#i'$str$out);
    echo 
    join(''$out[1]);
    Или так:
    PHP:
    $str 'vbgmhdg*ere(bmdtjkddv0964,32257));№\84Рsdgdgbs !@@3ё+_):;№';

    echo 
    preg_replace('#([^a-z0-9-\.,\*\(\)]?)#i'''$str);


    2)

    Code:
    RewriteRule ^page/([0-9]*)$ index.php?page=$1 [L]
    И ссылки придётся менять в скриптах
     
    1 person likes this.
  12. .:EnoT:.

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

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    1) а-я
    2) Правь пути к стилям, картинкам и т.д. Браузер то твой считает что это папка и соответственно оттуда и пытается загрузить. Чтоб не париться указывай полные пути.
     
  13. Frize

    Frize New Member

    Joined:
    8 Nov 2008
    Messages:
    44
    Likes Received:
    1
    Reputations:
    0
    Помогите вытащить текс
    попробовал так

    В регулярках разбираюсь плохо, но хочется все-таки понять в чем дело. =)
     
  14. Frize

    Frize New Member

    Joined:
    8 Nov 2008
    Messages:
    44
    Likes Received:
    1
    Reputations:
    0
    не, мне надо имено с этих тегов: <div class="h1"><h1> <div class="links">
     
  15. Pashkela

    Pashkela Динозавр

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

    $in 
    '
    <div class="h1"><h1>ТЕКСТ</h1></div>
    <p><em>ТЕКСТТЕКСТТЕКСТТЕКСТ
    ТЕКСТТЕКСТТЕКСТТЕКСТТЕКСТТЕКСТТЕКСТТЕКСТТЕКСТТЕКСТ ТЕКСТТЕКСТ
    ТЕКСТТЕКСТТЕКСТТЕКСТТЕКСТТЕКСТТЕКСТТЕКСТ.<br />
    </p>

    <div class="links">
    '
    ;

    preg_match('#div class=.*><h.*>(.*)</h.*></div>.*<p><em>(.*)<br />.*</p>.*<div class=.*>#Us',$in,$res);
    print_r($res);
    ?>
     
  16. OnArs

    OnArs Banned

    Joined:
    1 Aug 2008
    Messages:
    211
    Likes Received:
    13
    Reputations:
    1
    Всем привет, подскажите пожалуйста:

    Сейчас у меня в скрипте вот такие url'ы:
    lmap.php?act=free&id=27

    Хочется сделать ЧПУ, вот так:
    site.ru/free-7.html

    Как правильно будет выглядеть строка в .htaccess?

    Большое Спасибо! :)
     
  17. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Code:
    RewriteRule ^/?([^-]+)-([^\.]+)\.html?$ lmap.php?act=$1&id=$2
     
    _________________________
    1 person likes this.
  18. bxN5

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

    Joined:
    8 Jan 2006
    Messages:
    687
    Likes Received:
    138
    Reputations:
    32
    вообщем проблема в .htaccess
    ErrorDocument 404 /index.php
    но при ошибке получаю как и раньше 404 Not Found , доступа к серверу нету но апач вроде нормально настроен , какие еще варианты?
     
  19. bxN5

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

    Joined:
    8 Jan 2006
    Messages:
    687
    Likes Received:
    138
    Reputations:
    32
    поправочка , не редиректит ток html файлы
     
  20. AkyHa_MaTaTa

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

    Joined:
    19 Mar 2007
    Messages:
    557
    Likes Received:
    306
    Reputations:
    27
    Может в конфиге для AllowOverride не установленно FileInfo(соответсвенно и ErrorDocument) а может и вообше AllowOverride в None
     
Thread Status:
Not open for further replies.