我有这个功能来检查网址是否是图片:
function isImage($url){
$url_headers=get_headers($url, 1);
if(isset($url_headers['Content-Type'])){
$type=strtolower($url_headers['Content-Type']); // strtolower() expects parameter 1 to be string, array given
$valid_image_type=array();
$valid_image_type['image/png']='';
$valid_image_type['image/jpg']='';
if(isset($valid_image_type[$type])){
return true;
}
else{
return false;
}
}
}
和此:
if(isImage($matches[0])){ //do something }
它是一个数组,但我得到位置0的值并将其发送到函数。这里有什么问题?我只想要位置0.任何想法如何解决警告?
答案 0 :(得分:1)
它无法100%确定它总是会以真实的方式回归,但无论如何“Shujaat”建议首先应该检查:
1-标题内容而不是仅扩展(即使图像以“.php”或其他任何内容的动态提供动态,也能正常工作)
2-验证标头内容长度以确保其大于0且服务器未发送HTTP/1.1 404
3 - 验证图像是否为重定向。 (如果是404页面或默认图像文件)
基本示例:
// URL
$url = "https://packagecontrol.io/img/book5.png";
// verify the URL is exists or not
$get_headers = @get_headers($url);
if($get_headers[0] == 'HTTP/1.1 404 Not Found') {
$url_exists = false;
} else {
$url_exists = true;
}
// verify if the URL is image
if($url_exists){
if(isset($get_headers['Content-Type'])){
$type = strtolower($get_headers['Content-Type']);
$valid_image_type = array();
$valid_image_type['image/png'] = '';
$valid_image_type['image/jpg'] = '';
$valid_image_type['image/jpeg'] = '';
if(isset($valid_image_type[$type])){
// success
} else {
// fail.
}
}
} else {
// throw "URL does not Exist"
}
- 其他方式:
在我看来,更快的方法是使用这个在JavaScript上运行的项目
它非常好:Here
现场演示:Here