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

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

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

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

    Joined:
    24 Dec 2007
    Messages:
    393
    Likes Received:
    125
    Reputations:
    13
    вопросик нужно выбрать из текста слова или словосочетания не на ходящиеся в ссылке
    пытался так:
    [coed]
    /Slovo?![.]{20}<\/a>/
    [/code]
     
  2. toX1k

    toX1k New Member

    Joined:
    18 Sep 2010
    Messages:
    2
    Likes Received:
    0
    Reputations:
    -1
    /([^http:\/\/"\.+?"]\.+?)/
     
    #1282 toX1k, 21 Sep 2010
    Last edited: 21 Sep 2010
  3. Vid0k

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

    Joined:
    24 Dec 2007
    Messages:
    393
    Likes Received:
    125
    Reputations:
    13
    ты меня не правельно понял нужно найти слова
    которые не являются ссылкой т.е ищем "слово"
    подходит
    Code:
    много много [b]слово[/b] много много
    не походит
    Code:
    много много <a href="домен">[b]слово[/b]</a> много много
     
    #1283 Vid0k, 21 Sep 2010
    Last edited: 21 Sep 2010
  4. geforse

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

    Joined:
    2 Mar 2008
    Messages:
    617
    Likes Received:
    290
    Reputations:
    1
    Как вытащить "античат" из:

    Где XXX и YYY - не известное число пробелов (возможно 1, а возможно и 21)
     
  5. #Wolf#

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

    Joined:
    26 Mar 2008
    Messages:
    375
    Likes Received:
    166
    Reputations:
    16
    PHP:
    preg_match('#слово слово [\s]+(.*?)[\s]+ слово#is'$text$matches);
     
  6. geforse

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

    Joined:
    2 Mar 2008
    Messages:
    617
    Likes Received:
    290
    Reputations:
    1
    PHP:
    $text "слово слово XXXантичатYYY слово";
    preg_match("#слово слово [\s]+(.*?)[\s]+ слово#is"$text$matches);  
    echo 
    $matches[1];
    Не выводит.
     
  7. Fepsis

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

    Joined:
    17 Sep 2008
    Messages:
    791
    Likes Received:
    391
    Reputations:
    72
    Так там же пробелы должны быть...
    PHP:
    $text "слово слово      античат         слово"
    preg_match("#слово слово[\s]+(.*?)[\s]+ слово#is"$text$matches);   
    echo 
    $matches[1];
     
  8. geforse

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

    Joined:
    2 Mar 2008
    Messages:
    617
    Likes Received:
    290
    Reputations:
    1
    Fepsis, копирнул сюда просто не удачно. Если поставить 1 пробел до и после античата, то не работает.
    PHP:
    $text "слово слово античат слово";
    preg_match("#слово слово [\s]+(.*?)[\s]+ слово#is"$text$matches);  
    echo 
    $matches[1]
     
  9. #Wolf#

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

    Joined:
    26 Mar 2008
    Messages:
    375
    Likes Received:
    166
    Reputations:
    16

    PHP:
    $text "слово слово античат слово";
    preg_match("#слово слово[\s]+(.*?)[\s]+слово#is"$text$matches);  
    echo 
    $matches[1]
    так.
     
    1 person likes this.
  10. geforse

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

    Joined:
    2 Mar 2008
    Messages:
    617
    Likes Received:
    290
    Reputations:
    1
    #Wolf#, спасибо :)

    Ещё один вопрос. Есть строка:
    Как вытащить | и / ?
     
  11. #Wolf#

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

    Joined:
    26 Mar 2008
    Messages:
    375
    Likes Received:
    166
    Reputations:
    16
    перефразируй вопрос. убрать палочки эти? или вытащить "античат"?
     
    #1291 #Wolf#, 23 Sep 2010
    Last edited: 23 Sep 2010
  12. geforse

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

    Joined:
    2 Mar 2008
    Messages:
    617
    Likes Received:
    290
    Reputations:
    1
    Нет, нужно вытащить палочки)
    Тоесть есть текст, в нём (например в кавычках) стоит слово античат и нужно вытащить эти кавычки.
     
  13. #Wolf#

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

    Joined:
    26 Mar 2008
    Messages:
    375
    Likes Received:
    166
    Reputations:
    16
    PHP:
    $text='1111|античат/2222';
    preg_match('#1111(.*?)античат(.*?)2222#'$text$matches);
    //если уверен что на месте "кавычек" точно один символ, то замени (.*?) на (.?)
    print_r($matches);
    //
    Array
    (
        [
    0] => Array
            (
                [
    0] => 1111|античат/2222
            
    )

        [
    1] => Array
            (
                [
    0] => |
            )

        [
    2] => Array
            (
                [
    0] => /
            )

    )
    или я не понял тебя
     
  14. geforse

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

    Joined:
    2 Mar 2008
    Messages:
    617
    Likes Received:
    290
    Reputations:
    1
    #Wolf#, шикарно, спасибо :)
     
  15. Духъ

    Духъ Banned

    Joined:
    3 Sep 2007
    Messages:
    89
    Likes Received:
    7
    Reputations:
    0
    Сегодня подбирал регулярки и наткнулся на сервис
    http://gskinner.com/RegExr/
    проверяет регулярки и имеет в запасе готовые
    всё сделано на flash, мне понравилось и всем советую
     
  16. xtra

    xtra New Member

    Joined:
    11 Mar 2007
    Messages:
    26
    Likes Received:
    2
    Reputations:
    0
    привет народ
    подскажите как преобразовывать ссылки

    site.com/uploads/file.docx в site.com/download.php?f=file.docx

    ?
     
  17. mazaxaka

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

    Joined:
    15 Feb 2008
    Messages:
    268
    Likes Received:
    35
    Reputations:
    0
    спасибо хороший сервис. вот кстате тоже очень хороший для првоерки регулярок сам давно юзаю
    http://retester.simplecoding.org/
     
  18. Духъ

    Духъ Banned

    Joined:
    3 Sep 2007
    Messages:
    89
    Likes Received:
    7
    Reputations:
    0

    попробуй
    http://www.generateit.net/mod-rewrite/
     
  19. barnaki

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

    Joined:
    2 Nov 2008
    Messages:
    676
    Likes Received:
    135
    Reputations:
    4
    mod rewrite .

    есть файл htaccess вида
    Code:
    RewriteEngine On
    RewriteBase /
    #RewriteRule ^file=([a-zA-Z0-9//\]*)$ $1
    RewriteRule .* index.php?url=$0 [QSA,L]
    первый RewriteRule это моя попытка сделать слудующие.я хочу чтобы если в запросе есть параметр file то перенапрвло на этот файл для скачивания. а если нету то все запросы шли на index.php . только не могу написать это сам помогите . те статьи что вначале я прочел но все = не получается . мне бы примерчик
    файл индекс
    PHP:
    if (isset($_GET['file'])){$file $_GET['file'];header("Location: $file");  }
    include (
    "config/config.php");
    include (
    "classes/db.php");
    $db db :: singleton();
    include (
    "classes/book.php");
    $book book :: singleton();
    include(
    "classes/pagination.php");
    pagination::singleton();
    include(
    "classes/tags.php");
    if (!isset(
    $_GET['page'])) {$page  1;}
    else {
    $page =$_GET['page']; }// pagination::pages($page);
    pagination::pages($page);
    $result = array();
    $result $book->total_books($book_dir,"");
    сказали что можно дописать rewrite cond и добавить туда исключения. типа если оно обращается к папке books то чтобы все нормално направляло только я незнаю как это делается. подскажите плиз
    а пока что я имею url такого вида
    HTML:
    http://banderas/knigi/PHP_Books/PHP_Books/1.pdf
    но оно не скачивает а просто пишет его в адресную строку
     
    #1299 barnaki, 21 Oct 2010
    Last edited: 21 Oct 2010
  20. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    barnaki
    Code:
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_URI} !^/knigi.*
    RewriteRule .* index.php?url=$0 [QSA,L]
     
    _________________________
Thread Status:
Not open for further replies.