<?php 
$imgurl = "http://www.jb51.net/images/logo.gif"; 
//方法1 
echo $ext = strrchr($imgurl,'.'); 
echo '<hr>'; 
//方法2 
echo $ext1 = substr($imgurl,strrpos($imgurl, '.')); 
echo '<hr>'; 
//方法3 
echo(@end(explode(".",$imgurl))); 
echo '<hr>'; 
//方法4 
echo pathinfo($imgurl,PATHINFO_EXTENSION); 
print_r(pathinfo($imgurl)); 
echo '<hr>'; 
//方法5 
$imginfo= getimagesize($imgurl); 
print_r($imginfo); 
echo end($imginfo); 
echo '<hr>'; 
//方法6 
$imghttp = get_headers($imgurl,true); 
print_r($imghttp); 
echo '<hr>'; 
//方法7 
echo exif_imagetype($imgurl);

测试结果:

方法分析:

第一种思想方法就是把图片路径当作字符串来处理,那么判断图片格式的也就是变成了查找.号的字符串。

方法1:使用strrchr 
strrchr() 函数查找字符串在另一个字符串中最后一次出现的位置,并返回从该位置到字符串结尾的所有字符。

如果成失败,否则返回 false。备注:该函数是二进制安全的。

方法2:strrpos 
strrpos() 函数查找字符串在另一个字符串中最后一次出现的位置。

如果成功,则返回位置,否则返回 false。

注释:该函数对大小写敏感。如需进行大小写不敏感的查找,请使用 strripos()

先计算.号的位置,在使用substr截取字符串

方法3:explode把字符串分割成数组,取数组最后一个键值 
———————————————————————–

第二种思想,把图片路径当作文件路径,那么这里就需要gd类库函数或者php文件函数

方法4:使用pathinfo() 
pathinfo(path,options)函数以数组的形式返回文件路径的信息

包括以下的数组元素:

[dirname] 
[basename] 
[extension] 
options参数:

可选。规定要返回的数组元素。默认是 all。

可能的值:

PATHINFO_DIRNAME – 只返回 dirname 
PATHINFO_BASENAME – 只返回 basename 
PATHINFO_EXTENSION – 只返回 extension 
方式5:getimagesize获取图片大小格式的方式,这个不是gd类库函数 
这个方法很经典,不仅可以用来判断图片格式还可以获得图片长宽信息

方法6:get_headers获取http报头信息 
如果图片路径是一个标准的url路径,那么可以使用get_header函数,这个函数可以返回http报

头,另外这个方法也可以判断图片文件url是否是一个有效的url,使用方法参考:《PHP判断远程url是否有效的几种方法

方法7:使用gd类库函数 
exif_imagetype() 读取一个图像的第一个字节并检查其签名。

如果发现了恰当的签名则返回一个对应的常量,否则返回 FALSE。返回值和 getimagesize() 返回的数组中的索引 2 的值是一样的,但本函数快得多。

返回的常量值:对应的值,如例子返回1,对应的是gif格式图片。

综合评价 
目前比较主流使用的方法是方法1,如果考虑安全问题的话可以使用方法5,因为方法5可以判断这个文件是否为图像文件(可以避免有人把非法程序伪造成图片文件).

http://www.jb51.net/article/37813.htm

PHP判断图片格式的七种方法小结的更多相关文章

  1. ZH奶酪:PHP判断图片格式的7种方法

    以图片 $imgurl = "http://www.php10086.com/wp-content/themes/inove/img/readers.gif"; 为例: 思路1. ...

  2. asp.net(c#)网页跳转七种方法小结

    在asp.net下,经常需要页面的跳转,下面是具体的几种方法.跳转页面是大部编辑语言中都会有的,正面我们来分别介绍一下关于.net中response.redirect sever.execute se ...

  3. shell实例浅谈之一产生随机数七种方法

    一.问题 Shell下有时需要使用随机数,在此总结产生随机数的方法.计算机产生的的只是“伪随机数”,不会产生绝对的随机数(是一种理想随机数).伪随机数在大量重现时也并不一定保持唯一,但一个好的伪随机产 ...

  4. shell产生随机数七种方法

    shell实例浅谈之三产生随机数七种方法   一.问题 Shell下有时需要使用随机数,在此总结产生随机数的方法.计算机产生的的只是“伪随机数”,不会产生绝对的随机数(是一种理想随机数).伪随机数在大 ...

  5. (转)shell实例浅谈之产生随机数七种方法

    一.问题 Shell下有时需要使用随机数,在此总结产生随机数的方法.计算机产生的的只是“伪随机数”,不会产生绝对的随机数(是一种理想随机数).伪随机数在大量重现时也并不一定保持唯一,但一个好的伪随机产 ...

  6. shell实例浅谈之三产生随机数七种方法

    一.问题 Shell下有时须要使用随机数,在此总结产生随机数的方法.计算机产生的的仅仅是"伪随机数".不会产生绝对的随机数(是一种理想随机数).伪随机数在大量重现时也并不一定保持唯 ...

  7. 使用.Htaccess文件实现301重定向常用的七种方法

    使用.Htaccess文件实现301重定向常用的七种方法   301重定向对广大站长来说并不陌生,从网站建设到目录优化,避免不了对网站目录进行更改,在这种情况下用户的收藏夹里面和搜索引擎里面可能保存的 ...

  8. 用Excel如何将文本转换为数字的七种方法

    用Excel如何将文本转换为数字的七种方法 当下,很多工作都会用到Excel,下面本文分步介绍了如何将包含文本的Excel单元格转换为包含数字的单元格. 概述: 当导入在另一程序(如 dBASE 或  ...

  9. 用Delphi从内存流中判断图片格式[转]

    http://blog.163.com/tfn2008%40yeah/blog/static/110321319201222243214337/ 用Delphi从内存流中判断图片格式[转] 2012- ...

随机推荐

  1. spring源码学习之AOP(一)

    继续源码学习,看了spring中基础的容器和AOP感觉自己也没有什么长进,哈哈,我也不知道到底有用没有,这可能是培养自己的一种精神吧,不管那么多,继续学习!AOP中 AOP中几个重要的概念:(1)Ad ...

  2. nginx、php-fpm启动脚本

    Nginx官方启动脚本 //service nginx stop|start|restart|reloadtouch /etc/init.d/nginx chmod nginxvi /etc/init ...

  3. nginx链接末尾自动补全斜杠

    放在locaation里边就行 if (-d $request_filename){ rewrite ^(.*[^/])$ $/ permanent;#加斜杠 } 这样,nginx就会进行判断了,如果 ...

  4. python面向对象(二)

    初始化方法 当使用 类名() 创建对象时,会 自动 执行以下操作: 为对象在内存中 分配空间 —— 创建对象 为对象的属性 设置初始值 —— 初始化方法(init) 这个 初始化方法 就是 __ini ...

  5. canvas旋转图片

    canvas旋转图片 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...

  6. JetBrains PyCharm 2017.2 字体放大缩小 功能

  7. sklearn之特征提取(文本特征)

    1.引言 关于文本的提取有很多方法,本文主要探索下sklearn官方的文本特征提取功能. 2.文本特征提取 文本分析是机器学习算法的主要应用领域. 然而,原始数据,符号文字序列不能直接传递给算法,因为 ...

  8. iOS 中的 Deferred Deep Linking(延迟深度链接)

    http://www.cocoachina.com/ios/20160105/14871.html Deep Linking 其实 deep linking 并不是一个新名词,在 web 开发领域,区 ...

  9. js Date格式化时间兼容写法

    var time = "2018-03-12 11:11:11".split(/[- : \/]/); date = new Date(time[0], time[1]-1, ti ...

  10. 【水滴石穿】react-native-book

    先推荐一个学习的地址:https://ke.qq.com/webcourse/index.html#cid=203313&term_id=100240778&taid=12778558 ...