Составить регулярное выражение

Тема в разделе "PHP", создана пользователем Rigor, 12 апр 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Rigor

    Rigor

    Регистр.:
    1 июн 2008
    Сообщения:
    202
    Симпатии:
    33
    Нужно выдрать картинки, не могу составить регулярку для preg_match_all

    Вот что есть на странице
    Код:
    	<td width=1000><a href="/picture/926191/"><img border='0' alt="Эмма Уотсон (Emma Watson)" src='/im/kadr/9/2/6/kinopoisk.ru-Emma-Watson-926577.jpg' width='1000' height='1358' style="border:1px solid #777" onLoad=''></a></td>
    src картинки нужно получить. Заранее спасибо
     
  2. ZCFD

    ZCFD

    Регистр.:
    16 янв 2008
    Сообщения:
    989
    Симпатии:
    437
    PHP:
    if (preg_match('/<img border=\'0\' alt=".+?" src=\'(.+?)\'/'$text$tmp)) {
        
    $src_lnk $tmp[1];
    } else {
        
    $src_lnk "";
    }
    и советую скачать и пользоваться RegEx Buddy ( смотри на форуме )
     
    Rigor нравится это.
  3. bunny

    bunny Постоялец

    Регистр.:
    17 мар 2007
    Сообщения:
    66
    Симпатии:
    4
    если все то preg_match_all
    а регулярку можно использовать по проще

    PHP:
    $pattern="#<img.+?src=\'(.+?)\'.+?>#" ;
    и если захочешт слить картинки то необходимо будет дописать урл страницы
    PHP:
    preg_match_all($pattern$content$cur_arr);
    for(
    $i=0;$i<count($cur_arr[0]);$i++)
    {
    $img_url[]="http://www.kinopoisk.ru".$cur_arr[1][$i];
    }
     
    Rigor нравится это.
  4. Rigor

    Rigor

    Регистр.:
    1 июн 2008
    Сообщения:
    202
    Симпатии:
    33
    Что неравильно в этом скрипте(отрывок:(

    Код:
    while ($count != 1) { 
    $str=fgets($f1, 100); //адрес страницы с картинкой
    $txtsave=array();
    $stro = file_get_contents($str);
    echo $stro; //ничего не воыводит, почему? Функция в пхпини включена
    preg_match_all( '/<img border=\'0\' alt="Эмма Уотсон (Emma Watson)" src=\'(.+?)\'/', $stro, $txtsave );
    print_r($txtsave); // тоже пустой массив
     
  5. Arqin

    Arqin

    Регистр.:
    17 мар 2009
    Сообщения:
    185
    Симпатии:
    37
    Зачем используешь fgets и file_get_contents в одном месте?
    Что ты хочешь сделать? Считать файл в строку?
    Тогда так:
    PHP:
    $str "ссылка на хтмлку";
    $file_str file_get_contents($str); //получаем содержимое файла
    echo htmlspecialchars($file_str); //печатаем полученную строку
    Получить потом из строки нужные данные так:
    PHP:
    $pattern="#<img.+?src=\'(.+?)\'.+?>#" //шаблон длязборки строки
    preg_match_all($pattern$file_str$txtsave); //сама разборка строки
    print_r($txtsave); // теперь не пустой массив
     
  6. Rigor

    Rigor

    Регистр.:
    1 июн 2008
    Сообщения:
    202
    Симпатии:
    33
    Я получаю адрес с файла, а file_get_contents - получаю контент на странице... вобщем мне нужно открыть и получить эту страницу.
     
  7. RolCom

    RolCom

    Регистр.:
    12 мар 2008
    Сообщения:
    351
    Симпатии:
    108
    Скорее всего от того что fgets берет строку вместе с символами переноса строки. Удали их.
     
  8. Rigor

    Rigor

    Регистр.:
    1 июн 2008
    Сообщения:
    202
    Симпатии:
    33
    А как их удалить? Символы /n ? прегреплейсом?
     
  9. Arqin

    Arqin

    Регистр.:
    17 мар 2009
    Сообщения:
    185
    Симпатии:
    37
  10. RolCom

    RolCom

    Регистр.:
    12 мар 2008
    Сообщения:
    351
    Симпатии:
    108
    Ага, только \r и \n. Или чтоб наверняка:
    Код:
    preg_replace('/\R/','',$text);
    
     
Статус темы:
Закрыта.