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

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

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

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Code:
    |>print_email\(\'(.+?)\',\s*\'(.+?)\'\);|
    
    Круглые скобки экранировать следует
     
  2. Komyak

    Komyak Banned

    Joined:
    14 Jan 2009
    Messages:
    202
    Likes Received:
    18
    Reputations:
    1
    http://pyha.ru/fishki/regexp/

    Совпадений не найдено.

    Может ещё какие варианты?
     
  3. #Wolf#

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

    Joined:
    26 Mar 2008
    Messages:
    375
    Likes Received:
    166
    Reputations:
    16
    PHP:
    #print_email\('(.*?)','(.*?)'\);#is
    =>
    PHP:
    Array
    (
        [
    0] => Array
            (
                [
    0] => print_email('mail','yandex.ru');
            )

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

        [
    2] => Array
            (
                [
    0] => yandex.ru
            
    )

    )

     
    1 person likes this.
  4. Komyak

    Komyak Banned

    Joined:
    14 Jan 2009
    Messages:
    202
    Likes Received:
    18
    Reputations:
    1
    Работает! Спасибо! Я проверял на пыхе- он выдаёт ошибку. Проверил на локалке всё работает х.з. в чём дело.
     
  5. #Wolf#

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

    Joined:
    26 Mar 2008
    Messages:
    375
    Likes Received:
    166
    Reputations:
    16
    экстросенсы в отпуске =\
    попробуй закоменить кавычки и запятые
    -----------------------------------------------
    теперь я спрошу

    PHP:
    <Files .htaccess>
    Order deny,allow 
    Deny from all
    </Files>

    <
    IfModule mod_php4.c>
    php_value session.use_trans_sid 0
    </IfModule>

    <
    IfModule mod_deflate.c>
    <
    FilesMatch "\.(js|css)$">
    SetOutputFilter DEFLATE
    </FilesMatch>
    </
    IfModule>

    <
    IfModule mod_security.c>
    SecFilterEngine Off
    SecFilterScanPOST Off
    </IfModule>

    AddDefaultCharset utf-8
    Options 
    +FollowSymLinks
    Options 
    -Indexes

    RewriteEngine On
    #RewriteBase /
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule 
    ^(.*) $[L]
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule 
    ^(.*)$ index.php?category=$[L]
    RewriteCond %{HTTP_HOST} ^www\.host\.co\.cc$ [NC]
    RewriteRule ^(.*)$ http://host.co.cc/$1 [R=301,L]
    как это адаптировать под nginx?
     
    #885 #Wolf#, 6 Jan 2010
    Last edited: 6 Jan 2010
  6. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,174
    Likes Received:
    1,157
    Reputations:
    202
    #Wolf#, krypt3r
    Зачем лишние телодвижения? Модификаторы is и тд
    PHP:
    $var "<script>print_email('mail','yandex.ru');</script>";
    if(
    preg_match("#print_email\('(.*)','(.*)'\)#",$var$m))
    print_r($m);
     
  7. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,174
    Likes Received:
    1,157
    Reputations:
    202
    Вот грубо, на скорую руку:

    PHP:
    <?php
    $fp 
    file_get_contents('http://wap.gismeteo.ru/gm/normal/node/prognoz_week/6/?field_wmo=2778&field_index=2778&sd_field_date=gen_past_date_0&ed_field_date=gen_past_date_-6&field_tod=2');
    ################################################ ПАРСИМ
    # Ясность неба #
    if(preg_match_all('#<div style="font-size: 9px; padding: 0 0 3px 0; font-family: tahoma;">(.*)</div>#Uis',$fp,$osadki)) {
    $osadki array_map('strip_tags'$osadki[1]);
    $osadki array_map('trim'$osadki);
    }

    # Цельсий #
    preg_match_all('#<span style="color: (darkblue|\#cc0000);">(.*)</span>#',$fp,$cel);

    # День #
    if(preg_match_all('#<a href="/gm/normal/node/prognoz_day/6/\?field_wmo=.*">(.*)</a>#Uis',$fp,$day)) {
    $count count($day[1]);
    for (
    $i=0;$i $count$i++) {
    $days[] = strip_tags($day[1][$i]);
    $i++;
    }
    }
    ################################################ НАПАРСИЛИСЬ

    for ($i=0$o=0$i<=6$i++) {
    echo 
    $days[$i].'<br>';
    echo 
    $osadki[$o].'<br>';
    $o++;
    echo 
    $osadki[$o].'<br>';
    echo 
    $cel[2][$i+1].'<br><hr>';
    }
    ?>
    Результат:
     
  8. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    m0Hze http://pastebin.ru/309582

    Но лучше было бы парсить откуда нибудь отсюда: http://gismeteo.ru/city/busy/?city=4368&shift=0&print=1
     
    _________________________
  9. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,174
    Likes Received:
    1,157
    Reputations:
    202
    m0Hze
    когда-то для себя делал, маленький примитивный, но мне хватало.
    https://forum.antichat.ru/showpost.php?p=1455551&postcount=846
     
  10. DimOnOID

    DimOnOID Banned

    Joined:
    5 Dec 2006
    Messages:
    407
    Likes Received:
    126
    Reputations:
    4
    PHP:
    id=\"new_votes\">5<\/td>
    собсна на пятёру.
    Не шарю регулярках.хелп.
     
  11. speles

    speles Banned

    Joined:
    21 Aug 2009
    Messages:
    43
    Likes Received:
    3
    Reputations:
    0
    Помогите составить регулярное выражение для HTML строки c правильной вложенностью скобок типа (() (()()) ), где, например, '(' = '<div>', а ')' = '</div>'. Выражение должно возвратить строку из символов между крайним ( и ).
     
  12. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    PHP:
    <pre>
    <?php
    $a 
    'id="new_votes\">5<\/td>
    id="new_votes\">6<\/td>
    id="new_votes\">7<\/td>
    '
    ;
    preg_match_all('|id="new_votes\\\">(.*)<\\\/td>|',$a,$b);
    print_r ($b[1]);
    ?>
    </pre>
    Зацени пост выше своего и подумай, как надо спрашивать вопросы *лично я нихрена не понял, напиши тупо, что надо выдернуть, не умничай - в твоем примере всего две скобки, обе-две крайние, как не крути*
     
    #892 Pashkela, 9 Jan 2010
    Last edited: 9 Jan 2010
    1 person likes this.
  13. speles

    speles Banned

    Joined:
    21 Aug 2009
    Messages:
    43
    Likes Received:
    3
    Reputations:
    0
    на сайте
    Code:
    http://soft-best.ws/
    нужно выдернуть полное описание новости
     
    #893 speles, 9 Jan 2010
    Last edited: 9 Jan 2010
  14. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    мда.....ты заставляешь думать, а это очень больно.....Сложно привести ссылку на конкретную новость и показать текст (в исходниках), который надо выдрать? Вежливости в школе не научили?
     
  15. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    speles
    PHP:
    preg_match ('~<div[^>]*>([\s\S]*)</div>~i',$in,$out);
     
    _________________________
  16. GlooK

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

    Joined:
    20 Apr 2007
    Messages:
    172
    Likes Received:
    53
    Reputations:
    10
    Подскажите, почему это:
    PHP:
    preg_match('/\[\[(.*?)\]\]/im'$result$temp);
    не ищет в этом:
    PHP:
    здесь много текста html
    var friendsData = {здесьмногоразныхсимволов 'friends':[[2242936,"Магомед Арабханов","http:\/\/cs9696.vkontakte.ru\/u2242936\/b_0be60f10.jpg",1,"","Магомеда",0,1,932488,"",0],[17185664,"Влад Зотов","http:\/\/cs4326.vkontakte.ru\/u17185664\/b_f9cd97e9.jpg",1,"","Влада",0,1,953886,"",0],[3908114,"Влад Колесников","http:\/\/cs4150.vkontakte.ru\/u3908114\/b_5ca376ca.jpg",1,"","Влада",0,1,304,"12",0],[33390954,"Stephan Lampka","http:\/\/cs9636.vkontakte.ru\/u33390954\/b_14219071.jpg",1,"","Stephan",0,1,0,"",0],[25596089,"Оля Ющенко","http:\/\/cs10061.vkontakte.ru\/u25596089\/b_928d6744.jpg",1,"","Оли",0,1,2,"15",0]],'universities':{12:"ВИ",50745:"не указан"},'filter':'all'};
    здесь много текста html включая [[]]
    то что ограничено между [[ и ]]
     
  17. Alpha][

    Alpha][ Elder - Старейшина

    Joined:
    19 Oct 2007
    Messages:
    75
    Likes Received:
    5
    Reputations:
    0
    Если я не ошибаюсь , нужно вот так
    PHP:
    preg_match_all('/\\[\\[(.*?)\\]\\]/im'$result$temp);
     
  18. GlooK

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

    Joined:
    20 Apr 2007
    Messages:
    172
    Likes Received:
    53
    Reputations:
    10
    К сожалению, не помогло(

    P.S. Код нужен только для первого совпадения.
     
  19. warlok

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

    Joined:
    17 Feb 2008
    Messages:
    328
    Likes Received:
    142
    Reputations:
    81
    GlooK попробуй вместо /im поставить /s . Кстати что значит /im ? мм я вот у себя попробывал у меня твой вариант все нормально парсит.
     
  20. GlooK

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

    Joined:
    20 Apr 2007
    Messages:
    172
    Likes Received:
    53
    Reputations:
    10
    Спасибо. Решение нашел.
    Оказывается данные не получались из-за символа жадности ?
    Как-то странно он работает.
     
Thread Status:
Not open for further replies.