Когда я пытаюсь получить размер изображения, как это
$size=getimagesize(realpath('http://www.index.hr/images2/ivandžaferovic-fejs.jpg'));
В нем говорится:
Предупреждение: getimagesize ( http://www.index.hr/images2/ivandžaferovic-fejs.jpg ) [function.getimagesize]: не удалось открыть поток: HTTP-запрос не удался! HTTP / 1.0 400 Плохой запрос в test.php в строке 4 -bool (false)
Это из-за символа «ž» внутри изображения. без него функции работают. Что с этим делать
Он работает, если вы urlencode имя файла:
$size = getimagesize('http://img.ruphp.com/php/'.urlencode('ivand&')); print_r($size);
Более динамический пример с pathinfo :
$url = pathinfo('http://www.index.hr/images2/ivandžaferovic-fejs.jpg'); $size = getimagesize($url['dirname'].'/'.urlencode($url['basename'])); print_r($size);
Другой пример с parse_url :
$urlArray = parse_url('http://www.portal.com/ResourceManager/GetImage.aspx?imgId=619389&fmtId=99'); $url = ($urlArray['scheme'].'://'.$urlArray['host'].str_replace('%2F', '/', urlencode($urlArray['path']))); $url .= isset($urlArray['query']) ? '?'.$urlArray['query'] : ''; $size = getimagesize($url); print_r($size);
Он должен работать в большинстве случаев. Необходимо parse_url
схему (http, https и т. Д.), Иначе parse_url
не будет включать host
а только ключ массива path
. Поэтому для создания общего и безупречного решения вам придется потратить больше времени (написать больше кода) на разбор URL.