Не работает регулярное выражение

Discussion in 'PHP' started by Foster, 29 Sep 2011.

  1. Foster

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

    Joined:
    14 Jul 2005
    Messages:
    79
    Likes Received:
    10
    Reputations:
    2
    Не получается выдернуть нужные кусочки данных из строки
    http://1.fotoupload.ru/images/hwkte01o8irat9ng1w7q_thumb.jpg (нужные фрагменты выделены жирным шрифтом)

    PHP:
    <?
        
    $curl curl_init();
        
    curl_setopt($curlCURLOPT_URL'http://crech.us/111.html');
        
    curl_setopt($curlCURLOPT_RETURNTRANSFERtrue);
        
    curl_setopt($curlCURLOPT_ENCODING,'gzip,deflate');
        
    $data curl_exec($curl);
        
    curl_close($curl);

            
    preg_match("#http://(\d+)\.fotoupload\.ru/images/(.+)_thumb\.(.+)\"#"$data$prew2_image);

    print_r($prew2_image);
    ?>
    Подскажите пожалуста, где ошибка?
     
    #1 Foster, 29 Sep 2011
    Last edited: 29 Sep 2011
  2. Skofield

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

    Joined:
    27 Aug 2008
    Messages:
    960
    Likes Received:
    392
    Reputations:
    58
    Лишние кавычки:
    preg_match("#http://(\d+)\.fotoupload\.ru/images/(.+)_thumb\.(.+)\"#"
     
  3. Foster

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

    Joined:
    14 Jul 2005
    Messages:
    79
    Likes Received:
    10
    Reputations:
    2
    Пробовал без неё, результат тот же. Выходит что не лишняя, она показывает границу для выражения _thumb\.(.+)\" и в хтмл коде есть кавычка, она закрывает тег img.
    HTML:
    <img src="http://1.fotoupload.ru/images/hwkte01o8irat9ng1w7q_thumb.jpg" style="border: none;" alt='Schwanzwaldklinik' title='Schwanzwaldklinik' />
     
  4. Foster

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

    Joined:
    14 Jul 2005
    Messages:
    79
    Likes Received:
    10
    Reputations:
    2
    Но ведь в исходнике странички оно есть http://crech.us/111.html . Более того, в этом шаблоне даже нет перевода строки который прежде мне служил подводным камнем в некоторых шаблонах.

    Логика подсказывает мне что проблема в этом участке когда
    PHP:
    (.+)_thumb
    ибо если по отдельности парсю нужные мне участки кода то грабится все кроме (.+)_thumb
     
    #4 Foster, 29 Sep 2011
    Last edited: 29 Sep 2011
  5. Skofield

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

    Joined:
    27 Aug 2008
    Messages:
    960
    Likes Received:
    392
    Reputations:
    58
    preg_match("#http://(\d+)\.fotoupload\.ru/images/(\w+)_thumb\.(\w{3})\"#s", $str, $match);
    Не обратил внимания на страницу :)
     
    1 person likes this.
  6. Foster

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

    Joined:
    14 Jul 2005
    Messages:
    79
    Likes Received:
    10
    Reputations:
    2
    Спасибо большое, действительно помогло. пойду читать маны (
    + в репу