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

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

Thread Status:
Not open for further replies.
  1. Велемир

    Joined:
    19 Jun 2006
    Messages:
    1,123
    Likes Received:
    96
    Reputations:
    -25
    Да читал я,но мало что понял.Мб,ещё почитать надо

    [^?]+ Думаю,что имеется ввиду любое количество символов,кроме нулевого,а также исключая символ "?"
     
  2. Велемир

    Joined:
    19 Jun 2006
    Messages:
    1,123
    Likes Received:
    96
    Reputations:
    -25
    А то я не знаю,что они нужны.А нахрена=))
     
    1 person likes this.
  3. Zedi

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

    Joined:
    6 Jun 2007
    Messages:
    316
    Likes Received:
    120
    Reputations:
    13
    Как можно читать и не понять? Я думаю скобки типа для объединения регулярки, чем они тебе так мешают? Читай другие мануалы, где понятно, я пользуюсь мод реврайтом постоянно и мне например как то фиолетово зачем скобки нужны, нужны значит нужны
     
  4. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Велемир http://ru.wikipedia.org/wiki/ЧПУ_(Интернет)

    И у вас самого написано - * Круглые скобки () используются для выделения групп символов.В дальнейшем к ним можно обращатся по номеру.

    Банальный пример - есть форум, ссылки на топик вида example.com/readthread.php?id=6162 - ссылка длинная. А теперь хотим, чтобы набрав в браузере урл example.com/thread6162 мы попадали на ту же страницу что и по длинному урлу.

    RedirectMatch /thread(.*) http://example.com/readthread.php?id=$1

    Все урлы начинающиеся example.com/thread будут перенаправлены, при этом все что идет после этого (те самые скобки) мы "копируем" в переменную $1 которую и подставляем в редирект. Будет две скобки - две переменные и т.д.

    Набрав в браузере http://example.com/thread12345678 попадем на страницу /readthread.php?id=12345678
     
    _________________________
    #224 Gifts, 11 Feb 2009
    Last edited: 11 Feb 2009
    1 person likes this.
  5. Велемир

    Joined:
    19 Jun 2006
    Messages:
    1,123
    Likes Received:
    96
    Reputations:
    -25
    Ой...не спрашивай об этом Велю(
     
  6. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    PHP:
    $s '<b id="performer54529005">my chemical romance</b> - <span id="title54529005">famous last words</span> </div>';
    preg_match_all('|">(.*)</b> - <span id=.*>(.*)</span>|Uis'$s$res);
    print_r ($res);
     
    #226 Pashkela, 12 Feb 2009
    Last edited: 12 Feb 2009
  7. prescott

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

    Joined:
    28 Jul 2008
    Messages:
    132
    Likes Received:
    43
    Reputations:
    5
    Что нужно прописать в .htaccess чтобы абсолютно все запросы на сервер вели на один скрипт в корне?

    UPD: разобрался, сделал так:
    RewriteRule ^.*$ aa.php
     
    #227 prescott, 13 Feb 2009
    Last edited: 13 Feb 2009
  8. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    m0Hze А смысл? preg_match - возвращает первое вхождение, соответствующее маске, плюс есть параметр $offset. Написать функцию для поиска ровно 5 соответсвий не составляет труда
     
    _________________________
  9. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    m0Hze Написать собственную функцию

    preg_match получили первый результат
    strpos+strlen($result) - получили сдвиг
    повторить для нового оффсета нужное количество раз

    Остается вопрос - а смысл?
     
    _________________________
  10. Zedi

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

    Joined:
    6 Jun 2007
    Messages:
    316
    Likes Received:
    120
    Reputations:
    13
    Как сделать с помощью мод_реврайта чтобы если ссылка начиналась с /ххх/ допустим, а дальше еще много символов других, то к параметрам страницы добавлялось что то типа ххх=1, ну смысл то что у мя хтассес большой очень и нужно чтобы это действовало на все записи) ссори за корявый язык)
     
  11. Zedi

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

    Joined:
    6 Jun 2007
    Messages:
    316
    Likes Received:
    120
    Reputations:
    13
    разобрался, ссори затупил)))
     
  12. ntldr

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

    Joined:
    4 Dec 2007
    Messages:
    367
    Likes Received:
    140
    Reputations:
    23
    у меня строка такого вида:
    <td>-</td><td>текст1<br />текст666</td><td>-</td><td>текст1<br />текст666</td><td>-</td><td>-</td>

    то есть каждый раз по разному, либо тире, либо текст, можно ли сделать чтобы запоминались только то что стоит на месте текст1?
     
    1 person likes this.
  13. Pashkela

    Pashkela Динозавр

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

    $in 
    '<td>-</td><td>текст1<br />текст666</td><td>-</td><td>текст1<br />текст666</td><td>-</td><td>-</td>';
    preg_match_all('|>текст1<|Ui',$in,$rez);
    print_r ($rez);

    ?>
     
  14. .:EnoT:.

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

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    PHP:
    preg_match('#<td>([^<]*)<br />#'$string$out);
    м? ну или preg_match_all если все вхождения нужны с текст1
     
  15. ntldr

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

    Joined:
    4 Dec 2007
    Messages:
    367
    Likes Received:
    140
    Reputations:
    23
    текст1 - это переменная величина

    .:EnoT:., ну как то так да. а есть разница если я напишу вместо решеток слеш?
     
  16. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    есть, или так:

    |<td>([^<]*)<br />|

    или так:

    /<td>([^<]*)<br \/>/
     
  17. .:EnoT:.

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

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    Можно и так, чтобы не экранировать:
    /<td>([^<]*)<br/
     
  18. [dei]

    [dei] Active Member

    Joined:
    24 Nov 2008
    Messages:
    171
    Likes Received:
    112
    Reputations:
    5
    /<td>(.*?)<br/

    =\
     
  19. OnArs

    OnArs Banned

    Joined:
    1 Aug 2008
    Messages:
    211
    Likes Received:
    13
    Reputations:
    1
    Как сделать так чтобы при запросе файла index.html сервер передавал мне файл index.php.

    На данный момент Я реализовал это вот так:
    RewriteRule ^index.html$ index.php

    Но это безумно неудобно, т.к. для каждого файла придётся отдельно прописывать строку. Как сделать так чтобы аналогичное правило работало для всех файлов на сервере?

    Большое Спасибо!
     
  20. #Wolf#

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

    Joined:
    26 Mar 2008
    Messages:
    375
    Likes Received:
    166
    Reputations:
    16
    Подскажите как фильтровать входящие данные - разрешены только буквы и цифры
    и второй вариант - разрешены все символы кроме < > ?
     
Thread Status:
Not open for further replies.