Php getimagesize不适用于包含拉丁/特殊字符的图像

Php getimagesize不适用于包含拉丁/特殊字符的图像,php,Php,当我试图得到这样的图像大小 $size=getimagesize(realpath('http://www.index.hr/images2/ivandžaferovic-fejs.jpg')); 它说: 警告: getimagesize(/ivandžaferovic fejs.jpg) [function.getimagesize]:无法打开流:HTTP请求失败! HTTP/1.0 400中的错误请求 第4行的test.php -布尔(假) 这是因为照片中的“ž”字。没有它,函数就不能工作

当我试图得到这样的图像大小

$size=getimagesize(realpath('http://www.index.hr/images2/ivandžaferovic-fejs.jpg'));
它说:

警告: getimagesize(/ivandžaferovic fejs.jpg) [function.getimagesize]:无法打开流:HTTP请求失败! HTTP/1.0 400中的错误请求 第4行的test.php -布尔(假)

这是因为照片中的“ž”字。没有它,函数就不能工作。如何处理它

如果您输入文件名,它会工作:

$size = getimagesize('http://www.index.hr/images2/'.urlencode('ivandžaferovic-fejs.jpg'));

print_r($size);
更具动态性的示例包括:

另一个例子是:


它在大多数情况下都应该有效。必须提供方案(http、https等),否则
parse_url
将不包括
host
,而只包括
path
数组键。因此,要构建一个通用且完美的解决方案,您必须花费更多的时间(编写更多的代码)解析url。

问题是,并非每个图像url都是这样的。有些没有特殊字符:/
urlencode
不应阻止其他文件。所以这应该不是问题。如果我这样做,它就不起作用:getimagesize(urlencode(');这是可行的,但它会弄乱其他图片,比如GetImage.aspx。。。我想我必须使它比你给我的更复杂,并使用一些if/elsei如果图像url的差异太大,很难找到一个通用的解决方案。但请查看我的更新,其中包含
parse\u url
$url = pathinfo('http://www.index.hr/images2/ivandžaferovic-fejs.jpg');
$size = getimagesize($url['dirname'].'/'.urlencode($url['basename']));
print_r($size);
$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);