Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Копирование картинки по ссылке
 
 автор: dima_s_d_s   (05.12.2006 в 22:25)   письмо автору
 
 

Кто может подсказать, или навести пример того как можн скопировать все картинки с какого нибудь сайта?
За ранее благодарен! :)
(при этом все ссылки на картинки получины с помощью рег. выражений)

   
 
 автор: kasmanaft   (06.12.2006 в 05:41)   письмо автору
 
   для: dima_s_d_s   (05.12.2006 в 22:25)
 

Выдрал из своего скрипта ... вроде должно работать


<?php
        $text 
file_get_contents($_GET['url']); // нужная страница
        
$url parse_url($_GET['url']);
        
$host $url['host'];
        
$path $url['path'];
        if (!
preg_match("#^/.+/$#"$url['path']))
            
$path substr($url['path'], 0strlen($url['path']) - strlen(basename($url['path'])));
        
$path rtrim($path'/').'/';
        if (
preg_match_all("#<(img|image)[\s]+[^>]*src=['\"]?([^'\"\s>]+)['\"]?[^>]*>#is"$text$regs))
        {
            if (
count($regs[2] > 0))
            {
                if (!
is_dir('browser/'.$host))
                    
mkdir('browser/'.$host0777);
                foreach (
$regs[2] as &$imgname)
                {
                    if (
substr($imgname07) !=  'http://')
                    {
                        
$imgname preg_replace("#^(\.\./)*#"""$imgname);
                        if (
$imgname[0] != '/')
                            
$imgname "http://".$host.'/'.$path.$imgname;
                        else 
$imgname "http://".$host.$imgname;
                    }
                    @
copy($imgname'browser/'.$host.'/'.basename($imgname));
                    @
chmod('browser/'.$host.'/'.basename($imgname), 0777);
                }
            }
        }
?>

   
 
 автор: dima_s_d_s   (06.12.2006 в 11:28)   письмо автору
 
   для: kasmanaft   (06.12.2006 в 05:41)
 

Сенкс! Буду пробовать!
Можешь его немного прокоментировать?

   
 
 автор: kasmanaft   (06.12.2006 в 14:48)   письмо автору
 
   для: dima_s_d_s   (06.12.2006 в 11:28)
 

Ок, комментирую :)

<?php 
        $text 
file_get_contents($_GET['url']); // нужная страница 
// парсим адрес, для удобств
        
$url parse_url($_GET['url']); 
        
$host $url['host']; 
        
$path $url['path']; 
// если путь из адреса ведет к определенному файлу
// отрезаем имя файла, нам оно не нужно
        
if (!preg_match("#^/.+/$#"$url['path'])) 
            
$path substr($url['path'], 0strlen($url['path']) - strlen(basename($url['path']))); 
// путь должен заканчиваться на "/"
        
$path rtrim($path'/').'/'
// разбираем полученную страницу рег. выражением
// ищем на ней все картинки
        
if (preg_match_all("#<(img|image)[\s]+[^>]*src=['\"]?([^'\"\s>]+)['\"]?[^>]*>#is"$text$regs)) 
        { 
            if (
count($regs[2] > 0)) 
            { 
// если папки нет, создаем (вообще писал скрипт, который бы закачивал все
// картинки на ftp (у меня туда траф не считается) и катринки показывал уже оттуда
// поэтому тут везде "browser" ... нужно создать такую папку, если ничего трогать не будешь.
// в ней будет создаваться папка с именем сайта, откуда копируешь картинки 
// (куда они и будут копироваться)
                
if (!is_dir('browser/'.$host)) 
                    
mkdir('browser/'.$host0777); 
                foreach (
$regs[2] as &$imgname
                { 
// если ссылка на картинку относительная, делаем из нее
// абсолютную .... нужно сказать не лучшим образом (но в основном работает)
                    
if (substr($imgname07) !=  'http://'
                    { 
                        
$imgname preg_replace("#^(\.\./)*#"""$imgname); 
                        if (
$imgname[0] != '/'
                            
$imgname "http://".$host.'/'.$path.$imgname
                        else 
$imgname "http://".$host.$imgname
                    } 
// собственно копируем картинку
                    
@copy($imgname'browser/'.$host.'/'.basename($imgname)); 
                    @
chmod('browser/'.$host.'/'.basename($imgname), 0777); 
                } 
            } 
        } 
?>

   
 
 автор: dima_s_d_s   (06.12.2006 в 18:39)   письмо автору
 
   для: kasmanaft   (06.12.2006 в 14:48)
 

Спасибо ! :)

   
 
 автор: dima_s_d_s   (06.12.2006 в 18:55)   письмо автору
 
   для: kasmanaft   (06.12.2006 в 14:48)
 

Незнаю почему но у меня не выходит.
Я делаю так!
создал у себя на ftp паку browser
например
$url="http://figa.net.ru";
А потом зппускаю скрипт!
Может что-то не так?

   
 
 автор: kasmanaft   (06.12.2006 в 19:21)   письмо автору
 
   для: dima_s_d_s   (06.12.2006 в 18:55)
 

Вот так нужно сделать тогда:


<?php
        $link 
"http://figa.net.ru/";
        
$text file_get_contents($link); // нужная страница
        
$url parse_url($link);

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования