Парсер картинки на мой сервер и вывод в нужном мне месте

Тема в разделе "Как сделать...", создана пользователем gusewww, 17 июн 2012.

  1. gusewww

    gusewww

    Регистр.:
    4 июл 2011
    Сообщения:
    678
    Симпатии:
    302
    Задача:
    Имеем форму, имеем поле для ссылки куда вводим ссылку, после чего парсер ищет первую картинку по ссылке и копирует её на мой сервер в определененую папку, после выводит в нужном мне месте эту картинку, усе.
    Тут еще надо обдумать что-бы для юзера создавалась его папка куда и бросались бы все его картинки.
    Такой функционал реализован на vott.ru http://i035.radikal.ru/1206/70/2ab4b132c776.jpg , задача вроде и простая, но что-то никак не получается.
     
  2. etok

    etok Создатель

    Регистр.:
    6 окт 2010
    Сообщения:
    26
    Симпатии:
    10
    Что у тебя не получается, картинка на сервер не заливается? Папки пользователям создать и отЧмодить не можешь?
     
  3. ShaDeRzz

    ShaDeRzz

    Регистр.:
    16 окт 2007
    Сообщения:
    176
    Симпатии:
    65
    Приведите листинг кода, постараемся помочь.
     
  4. Extalionez

    Extalionez Клоун

    Заблокирован
    Регистр.:
    21 авг 2008
    Сообщения:
    368
    Симпатии:
    185
    Держите!

    PHP:
    <!DOCTYPE HTML>
    <html>
    <head>
        <meta http-equiv="content-type" content="text/html" />
        <meta name="author" content="Extalionez" />
     
        <title>Неназванный 1</title>
    </head>
     
    <body>
    <?php
        
    if(!$_GET['url']){
    ?>
    <form enctype="text/plain" method="get" >
    <input type="text" name="url" value="" />
    <input type="submit" value="найти" />
    </form>
     
    <?php }else{
        require 
    'snoopy.class.php'//качаем тут sourceforge.net/projects/snoopy/
        
    $page = new Snoopy;
        
    $page->fetch($_GET['url']);
        
    preg_match('/<img[^<>]+src="?([^" >]+?)[" >]/'$page->results$media);
        
    print_r($media);
    }
    ?>
    </body>
    </html>
    Особо не пинайте - писал в спешке. Если кто знает лучше регулярку - поправьте плз;)
    Затем юзаем copy(), чтобы скопировать к себе на сервер и тупо выводим.
    Хотя немного подумав по-пьяни дошёл до этого
    PHP:
    <!DOCTYPE HTML>
    <html>
    <head>
    <meta http-equiv="content-type" content="text/html" />
    <meta name="author" content="Extalionez" />
     
    <title>Неназванный 1</title>
    </head>
     
    <body>
    <?php
    if(!$_GET['url']){
    ?>
    <form enctype="text/plain" method="get" >
    <input type="text" name="url" value="seraf" />
    <input type="submit" value="найти" />
    </form>
     
    <?php }else{
        function 
    getExtension($filename) {
            return 
    end(explode("."$filename));
        }
        function 
    getDomain($url){
            return 
    parse_url($urlPHP_URL_SCHEME).'://'.parse_url($urlPHP_URL_HOST).'/';
        }
        require 
    'snoopy.class.php';
        
    $page = new Snoopy;
        
    $page->fetch($_GET['url']);
        
    preg_match('/<img[^<>]+src="\/?([^" >]+?)[" >]/'$page->results$media);
        
    $file_name rand(1000000000999999999999999).'.'.getExtension($media[1]);
        
    $image_loc 'C:\\inetpub\\Sites\\parser\\shell\\'//тут абсолютный путь к папке, где хранить файлы
        
    .$file_name;
     
        if(
    copy(getDomain($_GET['url']).$media[1], $image_loc)){
            
    ?><img src="http://parser/shell/<?php echo $file_name?>" /><?php
        
    }
    ?>
    </body>
    </html>
    Данное счастье работает только если в коде html ссылка на изображение имеет вид src="/images/sampledata/small-image-1.png" и находится она относительно корня url сайта, который передали в качестве параметра формы.
    P.S.: Это Developer, но уж никак не Production!!!!