PHP的getimagesize无法从URL检测图像

d3w*_*abe 4 php getimagesize

我正在使用以下代码快速验证链接是否为图像...

if (getimagesize($imageLink)) {
} else {
    echo "notImage";
    exit();
}
Run Code Online (Sandbox Code Playgroud)

它几乎可以在所有情况下工作(例如,如果浏览器返回图像,则getimagesize将返回某些内容),但是我发现某些情况下它不起作用-例如对于此链接...

http://s4.reutersmedia.net/resources/r/?m=02&d=20160330&t=2&i=1128905435&w=&fh=545px&fw=&ll=&pl=&sq=&r=LYNXNPEC2T0YW

这通常适用于路透社的网站,而且我敢肯定还有其他一些网站,但是由于浏览器设法返回了图像,因此我真的很难理解为什么会出现此问题。我本来以为getimagesize需要明确声明的文件路径(例如,以.jpg,.png等结尾),但是再一次像这样的链接可以正常工作...

https://d2sh4fq2xsdeg9.cloudfront.net/contentAsset/image/f9b79b5e-1986-4376-b9ed-0b153d6deb14/image/byInode/1/filter/Resize,Jpeg/jpeg_q/69/resize_w/434

非常感谢任何有想法的人的想法,为什么在第一个示例中getimagesize不会返回图像,而在第二个示例中会返回图像-关于如何修改代码以适应路透社示例的任何建议也都很棒!

Avi*_*nha 6

照原样使用

<?php 
list($width, $height) = getimagesize("http://s4.reutersmedia.net/resources/r/?m=02&d=20160330&t=2&i=1128905435&w=&fh=545px&fw=&ll=&pl=&sq=&r=LYNXNPEC2T0YW"); 
$arr = array('h' => $height, 'w' => $width );
print_r($arr); //output - Array ( [h] => 545 [w] => 968 ) 
?>
Run Code Online (Sandbox Code Playgroud)