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

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

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

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

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    Дикс,

    PHP:
    $original '/\[q\](.*)\[\/q\]/i';

     
    $pattern1 '-\[q\](.*?)\[/q\]-i';
     
    //                    ^
                          
     
    $pattern2 '-\[q\](.*)\[/q\]-Ui';
     
    //                            ^
     
  2. Zitt

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

    Joined:
    7 May 2006
    Messages:
    736
    Likes Received:
    268
    Reputations:
    59

    dei (12:26:46 10/01/2009)
    <?php
    $string = "пост [q]ЫЫЫ-<>Ы12Ы[/q] длинный пост [q]ЫЫЫ323ЫЫ[/q] длинный [q]ЫЫЫ34ЫЫ[/q] пост пост [q]ЫЫЫЫЫ2[/q]длинный пост [q] 1adasdsadas [q] sadasdasd[/q] sad";

    echo $string.'<br />'."\n";
    echo preg_replace('|\[q\]([^\[]*?)\[/q\]|', '<b>$1</b>', $string);
    ?>

    а оставшиеся теги можно выловить стр_реплейсом


    Den (12:26:46 10/01/2009)
    отправил ))
     
    #162 Zitt, 10 Jan 2009
    Last edited: 10 Jan 2009
  3. PandoraBox

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

    Joined:
    6 May 2007
    Messages:
    262
    Likes Received:
    176
    Reputations:
    7
    работа с ссылками <http>

    PHP:
    <?php

    $url 
    "http://site/script.php";
    preg_match('~^(http://)?([^/?#]+)(/[^?#]*)?(\?[^#]*)?(#.*)?$~i'$url$matches);

    echo 
    "Full path: ".$matches[0]."<br />"// http://site/script.php
    echo "Protocol: ".$matches[1]."<br />"// http://
    echo "Domain: ".$matches[2]."<br />"// site
    echo "Script: ".$matches[3]."<br />"// /script.php

    ?>
     
    #163 PandoraBox, 10 Jan 2009
    Last edited: 10 Jan 2009
  4. .:EnoT:.

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

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    и зачем? Когда есть ф-ция parse_url(), которая делает тоже самое...
     
  5. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Zitt Ваша регулярка поперхнется, если в тексте будут вложенные тэги [q] или даже просто [

    PHP:
    $string "пост [q]ЫЫЫ-[q]<>[/qwwe][Ы12Ы[/q][/q] длинный пост [q]ЫЫЫ323ЫЫ[/q] длинный [q]ЫЫЫ34ЫЫ[/q] пост пост [q]ЫЫЫЫЫ2[/q]длинный пост [q] 1adasdsadas [q] sadasdasd[/q] sad";

    echo 
    $string.'<br />'."\n";
    echo 
    preg_replace(
    array(
    '~\[q\]((?!\[/?q\])|[\s\S]*?)\[/q\]~i',
    '~\[/?q\]~i'), 
    array(
    '<b>$1</b>'
    ,''), $string);
    Плюс - тут удаляются все лишние [q] и [/q]
     
    _________________________
  6. ntldr

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

    Joined:
    4 Dec 2007
    Messages:
    367
    Likes Received:
    140
    Reputations:
    23
    RewriteRule ^([a-zA-Z0-9_]+)/?$ index.php?page=$1
     
    #166 ntldr, 11 Jan 2009
    Last edited: 11 Jan 2009
  7. AkyHa_MaTaTa

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

    Joined:
    19 Mar 2007
    Messages:
    557
    Likes Received:
    306
    Reputations:
    27
    наверно вот так
    RewriteEngine On
    RewriteRule ^([a-zA-Z0-9_]+)$ inc.php?page=$1
     
  8. ntldr

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

    Joined:
    4 Dec 2007
    Messages:
    367
    Likes Received:
    140
    Reputations:
    23
    я обновил, скорее так надо
     
  9. AkyHa_MaTaTa

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

    Joined:
    19 Mar 2007
    Messages:
    557
    Likes Received:
    306
    Reputations:
    27
    RewriteRule ^([a-zA-Z0-9_]+)/?$ index.php?page=$1
    ты опять не прав, попробуй сначало.
    Для
    "Я хочу,чтобы при обращении mysite.ru/admin открывалось index.php?page=admin"

    RewriteEngine On
    RewriteRule ^([a-zA-Z0-9_]+)$ inc.php?page=$1
     
    #169 AkyHa_MaTaTa, 11 Jan 2009
    Last edited: 11 Jan 2009
  10. ntldr

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

    Joined:
    4 Dec 2007
    Messages:
    367
    Likes Received:
    140
    Reputations:
    23
    аа мне почему-то покаалось что ему со слешем вконце надо, будет работать
    mysite.ru/admin
    и mysite.ru/admin/
     
  11. AkyHa_MaTaTa

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

    Joined:
    19 Mar 2007
    Messages:
    557
    Likes Received:
    306
    Reputations:
    27
    Если бы со слешом в конце его метод бы работал

    и у тебя ? не заэкранирован(и зачем он вообше там)
     
    #171 AkyHa_MaTaTa, 11 Jan 2009
    Last edited: 11 Jan 2009
  12. Nicca

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

    Joined:
    11 Jan 2008
    Messages:
    93
    Likes Received:
    4
    Reputations:
    -6
    Подскажите регулярное выражение

    Посдкажите регулярное выражение чтобы:
    Есть текст и в нем фото(<img src="">). Как с него вырезать фото? В одну переменную поместить фото, в другую текст без фото
     
  13. m0nsieur

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

    Joined:
    8 Apr 2008
    Messages:
    223
    Likes Received:
    69
    Reputations:
    10
    PHP:
    preg_match('/<img src="(.*)">/i'$subject);
    Вот таким образом можно достать картинку из src, а какой тебе текст нужен еще, что-то не понял..уточни.
     
  14. Malunga

    Malunga New Member

    Joined:
    3 Sep 2008
    Messages:
    13
    Likes Received:
    2
    Reputations:
    0
    Всем привет)) Вопрос вот какой: Как заставить регулярку парсить только определённое количество вхождений??
    Допустим в исходной строке 20 ссылок, регуляркой мы их парсим. так вот как заставить регулярку парсить предположим только первые 5 ссылок и всё?? ясный пень что можно взять нужные ссылки из результата что вернула регулярка, но вопрос в скорости работы, дабы в моём случае далеко не 20 ссылок, а намного больше......
     
  15. D Mak

    D Mak Elder - Старейшина

    Joined:
    23 Jun 2007
    Messages:
    136
    Likes Received:
    27
    Reputations:
    0
    имхо никак
     
  16. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    PREG_SET_ORDER
    PREG_OFFSET_CAPTURE

    http://ru2.php.net/manual/ru/function.preg-match-all.php
     
  17. w.u.n.

    w.u.n. Member

    Joined:
    13 Dec 2008
    Messages:
    40
    Likes Received:
    26
    Reputations:
    1
    ну тип так

    PHP:
    <?php
    $text 
    file_get_contents('http://www.google.com');

    $n=10;//количество вхождений
    $i=1;

    header('Content-type: text/plain');
    $p=0;
    while(
    preg_match('/<a.*?>(.*?)<\/a>/',$text,$m,PREG_OFFSET_CAPTURE,$p)) {
        echo 
    $m[0][0]."\n";
        
    $p=$m[0][1]+1;

        if(
    $n==$i++) break;
    }
    ?>
     
    2 people like this.
  18. Malunga

    Malunga New Member

    Joined:
    3 Sep 2008
    Messages:
    13
    Likes Received:
    2
    Reputations:
    0
    w.u.n., огромное спасибо!!!! то что нужно)))

    Pashkela, если ты не понял то не надо ничего писать...
     
  19. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    ты дурак? Посмотри на код, что тебе дали

    ЗЫЖ Расплодили даунов

    Смотри на мою мессагу и смотри на предложенный код, попробуй найти совпадения
     
  20. Malunga

    Malunga New Member

    Joined:
    3 Sep 2008
    Messages:
    13
    Likes Received:
    2
    Reputations:
    0
    Ты полегче с выражениями, не надо корчить из себя крутого.
    То что ты дал это флаги управления форматом вывода, и это никак не относится к моему вопросу.
    Я больше не собираюсь с тобой проводить какие-то перепалки, тема не для этого.
     
Thread Status:
Not open for further replies.