我需要检查网址是否为图片网址?我该怎么办?
示例:
http://www.google.com/
不是图片网址。http://www.google.com/
是图片网址。http://www.hoax-slayer.com/images/worlds-strongest-dog.jpg
不是图片网址。http://www.hoax-slayer.com/images/worlds-strongest-dog.jpg
是图片网址。如果您绝对要确定,并且您的PHP已启用远程连接,则可以使用
https://stackoverflow.com/search?q=.jpg
如果返回数组,则它是PHP识别的图像类型,即使图像扩展名不在url中(通过第二个链接)。您必须记住,此方法将为每个请求建立一个远程连接,因此可能已经在数据库中探测到的缓存URL降低了连接数。
您可以将https://stackoverflow.com/search?q=.jpg
发送到服务器,然后检查内容类型。这样,您至少知道服务器在“思考”什么是类型。
我认为这个想法是通过curl获取标题url的内容
并检查标题
在调用http://www.google.com/profiles/c/photos/private/AIbEiAIAAABECK386sLjh92M4AEiC3ZjYXJkX3Bob3RvKigyOTEzMmFmMDI5ODQ3MzQxNWQxY2VlYjYwYmE2ZTA4YzFhNDhlMjBmMAEFQ7chSa4PMFM0qw02kilNVE1Hpw
获得网页后,调用getimagesize('url');
从HTTP标头获得内容类型字符串
在此链接中查看操作方法:
可以使用此:
function validImage($file) {
$size = getimagesize($file);
return (strtolower(substr($size['mime'], 0, 5)) == 'image' ? true : false);
}
$image = validImage('http://www.example.com/image.jpg');
echo 'this image ' . ($image ? ' is' : ' is not') . ' an image file.';
这是一种需要卷曲的方法,但是比getimagesize更快,因为它不会下载整个图像。免责声明:它检查标头,但它们并不总是正确的。
curl_exec()