За последние 24 часа нас посетили 21208 программистов и 1636 роботов. Сейчас ищут 1504 программиста ...

Regex вытащить img

Тема в разделе "Регулярные выражения", создана пользователем JohnyG, 12 апр 2011.

  1. JohnyG

    JohnyG Активный пользователь

    С нами с:
    12 апр 2011
    Сообщения:
    3
    Симпатии:
    0
    Вариант 1.
    HTML:
    1. <img style="float: left; margin-left: 3px; margin-right: 3px;" title="Паранормальное явление / Paranormal Activity (2007) DVDScr" src="http://pics.kz/s3/da/2e/89/6f/da2e896f74eda5b7b027f3424d02b0cd.jpg" alt="Паранормальное явление / Paranormal Activity (2007) DVDScr" width="200" />
    Вариант 2.
    HTML:
    1. <img style=\"float: left; margin-left: 3px; margin-right: 3px;\" title=\"Наша Раша: Яйца судьбы [12 минут фильма] (комедия, 2010 год, премьера 21 января)\" src=\"http://pics.kz/s5/5f/a0/b0/fc/5fa0b0fcf06f148a2c91667d34139505.jpg\" alt=\"Наша Раша: Яйца судьбы [12 минут фильма] (комедия, 2010 год, премьера 21 января)\" width=\"200\" height=\"300\" />
    PHP:
    1. preg_match_all( '#<img[^>]*\\ssrc=(\'|")(.*?)\\1.*?>#i',$shortnews,$total)
    Первый варинат по регексу проходит, второй нет, хотя тоже содержит изображение. Помогите обновить регекс чтобы оба срабатывали. Вообщем-то я даже и различие вижу (если правильно вижу то это слеш "\" перед "http и еще один \ перед закрывающим ") только исправить не могу :(
     
  2. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    А если проще поступить и прогнать строку через функцию stripslashes()?
     
  3. JohnyG

    JohnyG Активный пользователь

    С нами с:
    12 апр 2011
    Сообщения:
    3
    Симпатии:
    0
    Ааааааааа спасибо выручил, я пока в php учусь, и многих функций незнаю )
     
  4. Skorpion_ua

    Skorpion_ua Активный пользователь

    С нами с:
    15 апр 2011
    Сообщения:
    5
    Симпатии:
    0
    А можно было бы по подробнее как это реализовать, я только начал знакомство с php , и прошу при возможности все разжевать.
     
  5. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Skorpion_ua, тут разжевывать нечего совсем, справочников по функциям php много, набираешь в поиске "php stripslashes", и выбираешь понравившуюся ссылку.
    имеем строку
    Код (Text):
    1. $str = '<img style=\"float: left; margin-left: 3px; margin-right: 3px;\" title=\"Наша Раша: Яйца судьбы [12 минут фильма] (комедия, 2010 год, премьера 21 января)\" src=\"http://pics.kz/s5/5f/a0/b0/fc/5fa0b0fcf06f148a2c91667d34139505.jpg\" alt=\"Наша Раша: Яйца судьбы [12 минут фильма] (комедия, 2010 год, премьера 21 января)\" width=\"200\" height=\"300\" />';
    передаем эту строку стандартной функции php для обработки строк
    Код (Text):
    1. $str = stripslashes($str);
    которая убирает обратную косую черту, получаем сроку
    Код (Text):
    1. <img style="float: left; margin-left: 3px; margin-right: 3px;" title="Паранормальное явление / Paranormal Activity (2007) DVDScr" src="http://pics.kz/s3/da/2e/89/6f/da2e896f74eda5b7b027f3424d02b0cd.jpg" alt="Паранормальное явление / Paranormal Activity (2007) DVDScr" width="200" />
     
  6. Skorpion_ua

    Skorpion_ua Активный пользователь

    С нами с:
    15 апр 2011
    Сообщения:
    5
    Симпатии:
    0
    О спасибо а можно вот это разобрать оч надо, а то целый день уже мучаюсь.

    Вариант 1. HTML:

    Код (Text):
    1.  [img]http://s45.radikal.ru/i110/1012/83/5c8a5a41e2a7.jpg[/img]
    и его абробатывал

    Код (Text):
    1. preg_match_all( '#<img[^>]*\\ssrc=(\'|")(.*?)\\1.*?>#i',$shortnews,$total);
    А теперь есть такое и он это не обрабатывает


    Код (Text):
    1. <img class="thumbnail ab22181" style="display: block; margin-left: auto; margin-right: auto;" src="http://i.jp0.ru/cache/240/12792049990.jpg" alt="Naruto: Shippuuden / Наруто (ТВ-2) [207 из xxx]" width="240" height="389" />
    и могут быть другие варианты но везде картинки.

    Как сделать так чтобы он находил картинки во всех случиях
     
  7. Skorpion_ua

    Skorpion_ua Активный пользователь

    С нами с:
    15 апр 2011
    Сообщения:
    5
    Симпатии:
    0
    YSandro
    О спасибо а можно вот это разобрать оч надо, а то целый день уже мучаюсь.

    Вариант 1. HTML:

    Код (Text):
    1.  [img]http://s45.radikal.ru/i110/1012/83/5c8a5a41e2a7.jpg[/img]
    и его абробатывал

    Код (Text):
    1. preg_match_all( '#<img[^>]*\\ssrc=(\'|")(.*?)\\1.*?>#i',$shortnews,$total);
    А теперь есть такое и он это не обрабатывает


    Код (Text):
    1. <img class="thumbnail ab22181" style="display: block; margin-left: auto; margin-right: auto;" src="http://i.jp0.ru/cache/240/12792049990.jpg" alt="Naruto: Shippuuden / Наруто (ТВ-2) [207 из xxx]" width="240" height="389" />
    и могут быть другие варианты но везде картинки.

    Как сделать так чтобы он находил картинки во всех случиях
     
  8. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Skorpion_ua, есть утилита RegExpCheck для упражнений с регулярными выражениями. Через поиск найди в сети.

    PS. Потестил эту утилиту ещё. Не так обрабатывает, как PHP. Жаль.
     
  9. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Skorpion_ua, не понятно. Вариант 1 у тебя совсем не HTML-ный.
    Для поиска картинок, у которых точно всегда есть аттрибут src, можно так
    Код (Text):
    1. <img.*?src=".*?".*?/>
    сейчас проверял.
     
  10. Skorpion_ua

    Skorpion_ua Активный пользователь

    С нами с:
    15 апр 2011
    Сообщения:
    5
    Симпатии:
    0
    YSandro

    Код (Text):
    1. <a href="http://tb.animereactor.ru/cova/188669_arruNaruto_shachiburi.jpg"><span style="color: #ff6600;"><img class="thumbnail ab22181" style="display: block; margin-left: auto; margin-right: auto;" src="http://i.jp0.ru/cache/240/12792049990.jpg" alt="Naruto: Shippuuden / Наруто (ТВ-2) [207 из xxx]" width="240" height="389" />
    Код (Text):
    1. [img]http://anime-skorpik.ru/uploads/posts/2011-04/1302788526_12919846510.jpg[/img]
    Код (Text):
    1. <img src="http://anime-skorpik.ru/uploads/posts/2011-04/1302791221_12645078740.jpg" border="0" alt="" />

    а можно как то сделать чтобы

    Код (Text):
    1. preg_match_all( '#<img[^>]*\\ssrc=(\'|")(.*?)\\1.*?>#i',$shortnews,$total);
    Обрабатывал все запросы допустим находил картинку по окончанию типа .jpg и .gif и тд.
    прошу помощи оч надо , а по ссылке я попозже зайду как только с этой задачей закончу.
    Спс за внимание и понимание .YSandro
     
  11. JohnyG

    JohnyG Активный пользователь

    С нами с:
    12 апр 2011
    Сообщения:
    3
    Симпатии:
    0
    1 и 3 html, второе bbcode откуда вы его берете? В бд он должен как html уходить, а для тех кто заполняется новости (контент для сайта) через bbcode он выглядит как второй вариант. Данная регулярка обработает 1 и 3, чтобы обработала второй вариант надо ее поправить указав что тег img может и c [ и с < начинаться и закрываться аналогично, потом указать что src опционально может и не быть, а идти сразу путь к картинке ну и указать что заканчивается все это дело [/img] я бы написал но я в регулярках не шарю, если не возможно сделать с помощью одной, то написать две, и в скрипте пробегаться по одной, нету совпадений, пробегаться по второй. В моем случае я вытаскивал картинки из короткой новости в бд, и там естественно html, откуда вы выдраться пытаетесь для меня вопрос :)
     
  12. Skorpion_ua

    Skorpion_ua Активный пользователь

    С нами с:
    15 апр 2011
    Сообщения:
    5
    Симпатии:
    0
    И всё бы хорошо но оно не обрабатывает 1 код и обрабатывает 3 но не всегда и в этом вся проблема и я не могу понять почему . Кто нить напишите регулярку бо мне до их написания придётся месяц копаться а времени почти уже нет