скачать картинку через пхп

Статус
В этой теме нельзя размещать новые ответы.
ну если там гифы онли тогда
PHP:
function get_images($url, $image_dir, $image_name)
{
	$image_name++; 
	$savefile = $image_dir ."/". $image_name  ;

	$ch = curl_init ($url);
	$fp = fopen ( $savefile, "wb");
	if (!$fp)
		write_log('Не удалось открыть файл для сохранения изображения ' . $url);
	curl_setopt ($ch, CURLOPT_FILE, $fp); 
	curl_setopt ($ch, CURLOPT_HEADER, 0);
	curl_exec ($ch);
	curl_close ($ch);
	fclose ($fp);
}



$str = file_get_contents('http://news.сайт'); //эта функция не поддерживает редиректы типа 301-302 словишь глюков с ней
 $arr = explode('разбиваем по этому тегу',$str); 
//запускаем в цикл  чтоб  брать   несколько новостей 
  for($i=1;$i<=6;$i++) { 
    @$tmp = $arr[$i]; 
    $tmp = substr($tmp,strpos($tmp,' ')+0); 
//теперь из всего  контента страницы берем нужное между тегами <div class="maintext">  и <p style="clear: both"> 
         preg_match('/<div class="maintext">.*?<p style="clear: both">/is', $tmp , $tmp ); 

$a=explode('.gif',$tmp); 
$true_url=str_replace('<img src="','',$a[0]).'.gif'; 

          print  $true_url; 
get_images($true_url, 'images', time().'.gif');
}

где-то так, чесно не проверял на синтаксис - но как концепт думаю пойдет :)
если не только гиф тогда нужно ввести проверку какого типа графика в строчке и делать эксплоуд уже по тому расширению
 
megadude Скажитепожалуйста
А попроще нет ничего? В пару строк.

1) найти в тексте картинку по расширению gif или jpg
затем взять урл картинки от http до gif или jpg
занести урл в переменную и затем скачать.
и сохранить файлик в папку
Просто я не очень хорошо разбираюсь в PHP
:)
 
PHP:
$a=explode('.gif',$tmp);  
$true_url=str_replace('<img src="','',$a[0]).'.gif';
вот эти две строчки выдирают из твоей большой строки ссылку на картинку и она будет храниться в тру_урл

ну а сохранить выше по ветке есть функции готовые(function get_images) - их и юзай(те) :)

Как уже проще и короче - честно незнаю :)
 
PHP:
$a=explode('.gif',$tmp);  
$true_url=str_replace('<img src="','',$a[0]).'.gif';
вот эти две строчки выдирают из твоей большой строки ссылку на картинку и она будет храниться в тру_урл

ну а сохранить выше по ветке есть функции готовые(function get_images) - их и юзай(те) :)

Как уже проще и короче - честно незнаю :)


В общем картинку на сайте выдрать
получается
вот так
PHP:
$f1 = fopen("полный адрес картинки", "r");
        $buffer = fgets($f1, 24);
         $f2 = fopen("1095652_20080906150758.gif", "w");
          while (!feof ($f1))
            {
              fputs($f2, $buffer);
              $buffer = fgets($f1, 4096);
            }
          fputs($f2, $buffer);
          fclose ($f1);
          fclose ($f2);
но мне теперь нужно получить ее из строки
А мне выдает ошибку.
megadude Если у вас есть аська скиньте в личку.
Я вам покажу пример .
 
Код:
function cut_str($str, $left, $right) {
    $str = substr ( stristr ( $str, $left ), strlen ( $left ) );
    $leftLen = strlen ( stristr ( $str, $right ) );
    $leftLen = $leftLen ? - ($leftLen) : strlen ( $str );
    $str = substr ( $str, 0, $leftLen );
    return $str;
}

// В одну строку решение :)
copy('http'.cut_str($str, 'http', '.gif').'.gif','outfile.gif');
 
Код:
function cut_str($str, $left, $right) {
    $str = substr ( stristr ( $str, $left ), strlen ( $left ) );
    $leftLen = strlen ( stristr ( $str, $right ) );
    $leftLen = $leftLen ? - ($leftLen) : strlen ( $str );
    $str = substr ( $str, 0, $leftLen );
    return $str;
}

// В одну строку решение :)
copy('http'.cut_str($str, 'http', '.gif').'.gif','outfile.gif');

Ваш код вытащил из страницы все что идет до body
странно почему так.


Вот мой код и он работает.Но только для одного файла


Но проблемма в от в чем
Если я в место урла вставляю массив
то не работает.


Собственно имеем строку вида
<img src="http://сайт картинка.jpg> или gif
картинка находится в переменной $text
Вот нужно взять из переменной картинку и сохранить .
При этому информация загружается циклом.
Так как имеется несколько новостей.
 
Так привильно по массиву надо пройти foreach () чтоб обработать каждый элемент.
 
Так привильно по массиву надо пройти foreach () чтоб обработать каждый элемент.

Да я уже разобрался
Все работает. Единственное как мне в 5 строку добавить тег:)

можно конечно циклом
но это создаст дополнительную нагрузк.
на скрипт
к прмиеру
строка1
строка2
строка3
строка4
строка5 здесь надо вставить тег <!--//-->
строка6
строка7
 
Да я уже разобрался
Все работает. Единственное как мне в 5 строку добавить тег:)

можно конечно циклом
но это создаст дополнительную нагрузк.
на скрипт
к прмиеру
строка1
строка2
строка3
строка4
строка5 здесь надо вставить тег <!--//-->
строка6
строка7

if($str == "строка5") $str = "<!--".$str."-->";
 
if($str == "строка5") $str = "<!--".$str."-->";


Вы наверное не так поняли меня
Мне надо
сделать так
PHP:
$str="8888888888888888888888888888888
       888888888888888888888888888888888888
       888888888888888888888888888888
       888888
       888888888
       888888888888888888888888";
        if($str[i] == "строка 5") $str[i] = "<!--".$str[i]."-->";
        echo $str;

результат скрипта работы должен быт таким
8888888888888888888888888888888
888888888888888888888888888888888888
888888888888888888888888888888
888888
888888888 <!---->
888888888888888888888888
собственно мне подсказал один добрый человек решение
вот так
PHP:
$array = explode("\n", $text);
$array[5] .= '<!--more-->';
$text = implode("\n", $array);
echo "$text";
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху