ФорумПрограммированиеPHP для идиотов → Парсер картинок

Парсер картинок

  • drugoi

    Сообщения: 71 Репутация: N Группа: Адекваты

    Spritz 14 марта 2010 г. 9:47

    Привет, помогите исправить регулярку.
    Задача: вытащить все картинки со страницы, у которых имеется параметр alt="Template ….какой-то номер"
    (капец!! задача вроде проще некуда, но чет не выходит)
    Пока реализовал вот так:

    $url="http://www.templatemonster.com/website-templates.php";
    $data = file_get_contents($url);
    preg_match_all("#<img(.*)>#iUs",$data,$images);
    foreach($images[0] as $img)
    {
    if(strpos($img,"alt=\"Template")){echo $img."<br>";}
    }

    все ок, но хотел сделать без foreach, чисто регуляркой.
    Прочитал кучу мануалов. Но видимо хреново читал)))))
    подскажите люди добрые
  • drugoi

    Сообщения: 71 Репутация: N Группа: Адекваты

    Spritz 14 марта 2010 г. 9:52, спустя 5 минут 18 секунд


    но хотел сделать без foreach,

    ГЫ
    хотел сказать - без strpos
  • md5

    Сообщения: 11948 Репутация: N Группа: в ухо

    Spritz 14 марта 2010 г. 9:54, спустя 1 минуту 40 секунд

    задача вроде проще некуда, но чет не выходит

    ахаха
    обожаю такие фразы
    чет не выходит)
    Спустя 81 сек.
    думаю, что-то вроде
    #img src="(.*?)" alt="Template ([0-9]+)"#i

    но я с регулярками не очень на память)
    все умрут, а я изумруд
  • Ewg777

    Сообщения: 510 Репутация: N Группа: Джедаи

    Spritz 14 марта 2010 г. 9:54, спустя 15 секунд

    drugoi, strpos у Вас возращае 0 или false, поэтому "не" работает.
  • drugoi

    Сообщения: 71 Репутация: N Группа: Адекваты

    Spritz 14 марта 2010 г. 10:01, спустя 7 минут 37 секунд


    ахаха
    обожаю такие фразы
    чет не выходит)




    думаю, что-то вроде
    #img src="(.*?)" alt="Template ([0-9]+)"#i


    попробовал.. не канаетъ


    drugoi, strpos у Вас возращае 0 или false, поэтому "не" работает.

    да все работает у меня, написал же что хотел тока регуляркой!
  • Ewg777

    Сообщения: 510 Репутация: N Группа: Джедаи

    Spritz 14 марта 2010 г. 10:09, спустя 7 минут 46 секунд

    #alt="Template ([0-9]+)" src="(.*?)"#i


    да все работает у меня, написал же что хотел тока регуляркой!
    Не глядел пример и предположил, что очередной пыховичёк.
  • drugoi

    Сообщения: 71 Репутация: N Группа: Адекваты

    Spritz 14 марта 2010 г. 10:32, спустя 22 минуты 58 секунд

    добавил шоб и страницу можно было выбирать
    вот рабочий пример
    вот код:

    $get = explode("?",$_SERVER['REQUEST_URI']);
    $get = $get[1];
    if(empty($get)){$get=1;}
    $query = "?type=1&from=".$get;
    $url="http://www.templatemonster.com/website-templates.php".$query;
    $data = file_get_contents($url);
    preg_match_all("#<img(.*)>#iUs",$data,$images);
    foreach($images[0] as $img)
    {
    if(strpos($img,"alt=\"Template")){echo $img."<br>";}
    }

  • Ewg777

    Сообщения: 510 Репутация: N Группа: Джедаи

    Spritz 14 марта 2010 г. 10:35, спустя 2 минуты 32 секунды

    drugoi, я уже привёл рабочую регулярку.
    Спустя 52 сек.

    $get = explode("?",$_SERVER['REQUEST_URI']);
    $get = $get[1];
    Супер
  • drugoi

    Сообщения: 71 Репутация: N Группа: Адекваты

    Spritz 14 марта 2010 г. 11:10, спустя 35 минут 15 секунд


    drugoi, я уже привёл рабочую регулярку.
    Спустя 52 сек.

    $get = explode("?",$_SERVER['REQUEST_URI']);
    $get = $get[1];
    Супер

    попробовал, не работает твоя регулярочка то)))
  • Ewg777

    Сообщения: 510 Репутация: N Группа: Джедаи

    Spritz 14 марта 2010 г. 11:18, спустя 8 минут 1 секунду



    drugoi, я уже привёл рабочую регулярку.
    Спустя 52 сек.

    $get = explode("?",$_SERVER['REQUEST_URI']);
    $get = $get[1];
    Супер

    попробовал, не работает твоя регулярочка то)))
    Почему она на regexpr.ru работает?
    Спустя 282 сек.
    Это FireBug всё выровнял, а Вы не догадались поменять местами.
    #src="(.*?)" alt="Template ([0-9]+)"#i
    Спустя 44 сек.
    Пруфлинк:
    http://regexpr.ru/?pattern=%23src%3D%22%28.*%3F%29%22+alt%3D%22Template+%28[0-9]%2B%29%22%23i&subject=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%3Cdiv%3E%0D%0A%0D%0A++%3Ca+style%3D%22cursor%3A+hand%3B%22+href%3D%22%2Fwebsite-templates%2F28053.html%22+target%3D%22_blank%22%3E%0D%0A++++%3Cimg+src%3D%22http%3A%2F%2Fimages.templatemonster.com%2Fscreenshots%2F28000%2F28053-m.jpg%22+alt%3D%22Template+28053%22++border%3D%221%22+style%3D%22border-color%3A+777777%3B%22+id+%3D+%22tpl_28053%22+%2F%3E%0D%0A++%3C%2Fa%3E%0D%0A
  • drugoi

    Сообщения: 71 Репутация: N Группа: Адекваты

    Spritz 14 марта 2010 г. 11:30, спустя 12 минут 17 секунд


    Это FireBug всё выровнял, а Вы не догадались поменять местами.
    #src="(.*?)" alt="Template ([0-9]+)"#i


    точняк! спасибо! чет я тормознул и в правду
  • drugoi

    Сообщения: 71 Репутация: N Группа: Адекваты

    Spritz 14 марта 2010 г. 11:59, спустя 28 минут 28 секунд

    нихрена не работает
    вот смотри:

    http://regexpr.ru/?pattern=%23src%3D%22%28.%2A%3F%29%22+alt%3D%22Template+%28%5B0-9%5D%2B%29%22%23i&subject=++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%3Cdiv%3E%0D%0A++%3Ca+style%3D%22cursor%3A+hand%3B%22+href%3D%22%2Fwebsite-templates%2F27975.html%22+target%3D%22_blank%22%3E%0D%0A++++%3Cimg+src%3D%22http%3A%2F%2Fimages.templatemonster.com%2Fscreenshots%2F27900%2F27975-m.jpg%22%0D%0A+++++++++alt%3D%22Template+27975%22%0D%0A+++++++++border%3D%221%22%0D%0A+++++++++style%3D%22border-color%3A+777777%3B%22%0D%0A+++++++++id+%3D+%22tpl_27975%22+%2F%3E%0D%0A%0D%0A++%3C%2Fa%3E%0D%0A%09%0D%0A%3C%2Fdiv%3E%0D%0A%0D%0A%0D%0A%0D%0A++%0D%0A+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%3Cdiv%3E%0D%0A%0D%0A++%3Ca+style%3D%22cursor%3A+hand%3B%22+href%3D%22%2Fwebsite-templates%2F27949.html%22+target%3D%22_blank%22%3E%0D%0A++++%3Cimg+src%3D%22http%3A%2F%2Fimages.templatemonster.com%2Fscreenshots%2F27900%2F27949-m.jpg%22%0D%0A+++++++++alt%3D%22Template+27949%22%0D%0A+++++++++border%3D%221%22%0D%0A+++++++++style%3D%22border-color%3A+777777%3B%22%0D%0A+++++++++id+%3D+%22tpl_27949%22+%2F%3E%0D%0A++%3C%2Fa%3E%0D%0A%09%0D%0A%3C%2Fdiv%3E%0D%0A%0D%0A%3C%0D%0A%0D%0A++%3Ca+style%3D%22cursor%3A+hand%3B%22+href%3D%22%2Fwebsite-templates%2F27934.html%22+target%3D%22_blank%22%3E%0D%0A++++%3Cimg+src%3D%22http%3A%2F%2Fimages.templatemonster.com%2Fscreenshots%2F27900%2F27934-m.jpg%22%0D%0A+++++++++alt%3D%22Template+27934%22%0D%0A+++++++++border%3D%221%22%0D%0A+++++++++style%3D%22border-color%3A+777777%3B%22%0D%0A+++++++++id+%3D+%22tpl_27934%22+%2F%3E%0D%0A++%3C%2Fa%3E%0D%0A%09%0D%0A%3C%2Fdiv%3E
  • Ewg777

    Сообщения: 510 Репутация: N Группа: Джедаи

    Spritz 14 марта 2010 г. 12:01, спустя 2 минуты 35 секунд

    Что проще? Написать на форум "исправьте регулярку" или убрать \n и \r?
  • mario

    Сообщения: 6067 Репутация: N Группа: Джедаи

    Spritz 14 марта 2010 г. 13:07, спустя 1 час 5 минут 53 секунды



    пожалуйста, не нужно больше такого, меня чуть инфаркт не схватил…
  • drugoi

    Сообщения: 71 Репутация: N Группа: Адекваты

    Spritz 14 марта 2010 г. 13:12, спустя 4 минуты 51 секунду




    пожалуйста, не нужно больше такого, меня чуть инфаркт не схватил…

    согласен))))))))))) ну заработался
    Спустя 44 сек.

    Что проще? Написать на форум "исправьте регулярку" или убрать \n и \r?

    в первом посту как раз и написано, что прошу подсказать

    а у брать переносы когда? до регулярки?
    типа этого чтоль?
    str_replace(array("\n", "\r", "\t", "\f"), '', $data);
    preg_match_all('#<img(.*)\>#iUs',$data,$images);

Пожалуйста, авторизуйтесь, чтобы написать комментарий!