Даунлодер картинок

Статус
В этой теме нельзя размещать новые ответы.

LEXAlForpostl

Мой дом здесь!
Регистрация
21 Май 2008
Сообщения
766
Реакции
228
Здравствуйте.
Решил написать даунлодер картинок.
Столкнулся с проблемой, спарсиваю путь src'а и пути не всегда прямые, есть косвенные пути. Может кто встречал класс или функцию которая скачивает картинки, независимо от типа пути к картинке.
 
Function: _expandlinks
Purpose: expand each link into a fully qualified URL
Input:
$links the links to qualify
$URI the full URI to get the base from
Output: $expandedLinks the expanded links


PHP:
	function _expandlinks($links,$URI)
	{
		preg_match("/^[^\?]+/",$URI,$match);
		$match = preg_replace("|/[^\/\.]+\.[^\/\.]+$|","",$match[0]);
		$match = preg_replace("|/$|","",$match);
		$match_part = parse_url($match);
		$match_root =
		$match_part["scheme"]."://".$match_part["host"];
		$search = array( 	"|^http://".preg_quote($this->host)."|i",
							"|^(\/)|i",
							"|^(?!http://)(?!mailto:)|i",
							"|/\./|",
							"|/[^\/]+/\.\./|"
						);
		$replace = array(	"",
							$match_root."/",
							$match."/",
							"/",
							"/"
						);			
		$expandedLinks = preg_replace($search,$replace,$links);
		return $expandedLinks;
	}
 
Не работает.

PHP:
   function _expandlinks($links,$URI)
    {
        preg_match("/^[^\?]+/",$URI,$match);
        $match = preg_replace("|/[^\/\.]+\.[^\/\.]+$|","",$match[0]);
        $match = preg_replace("|/$|","",$match);
        $match_part = parse_url($match);
        $match_root =
        $match_part["scheme"]."://".$match_part["host"];
        $search = array(     "|^http://".preg_quote([U]$this[/U]->host)."|i",
                            "|^(\/)|i",
                            "|^(?!http://)(?!mailto:)|i",
                            "|/\./|",
                            "|/[^\/]+/\.\./|"
                        );
        $replace = array(    "",
                            $match_root."/",
                            $match."/",
                            "/",
                            "/"
                        );            
        $expandedLinks = preg_replace($search,$replace,$links);
        return $expandedLinks;
    }  
	
	
$links="http://site.ru/templates/default/im/video.jpg";
var_dump (_expandlinks($links,'http://site.ru'));

Ошибка:

Fatal error: Using $this when not in object context in ***\qualify.php on line 11
 
Очевидно, вместо $this->host должно быть $match_part["host"]
 
Заменил, всё работает.
Но результат не верно :)
 
Что именно не верно? Не все выкусывает? Неправильно подставляет? Неправильно заменяет? Заменяет на неправильные ссылки? Или вообще не заменяет?
 
Написал функцию, всё работает.
Пользуйтесь, кому надо.
Важно мнение специалостов.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху