PHP - 抓取路径的文件扩展名

时间:2012-12-24 14:28:54

标签: php

这是否会获取路径的文件扩展名?它构成了文件上传脚本的一部分,该脚本继续检查$ end是“jpg”而不是其他内容。考虑到我的情况,可以绕过它吗?

$temp = strlen($path);
$end = $path[$temp-3] . $path[$temp-2] . $path[$temp-1];

3 个答案:

答案 0 :(得分:6)

查看:http://php.net/manual/en/function.pathinfo.php

  

mixed pathinfo(string $ path [,int $ options = PATHINFO_DIRNAME | PATHINFO_BASENAME | PATHINFO_EXTENSION | PATHINFO_FILENAME])

<?php
$path_parts = pathinfo('/www/htdocs/inc/lib.inc.php');

echo $path_parts['dirname'], "\n";    # returns: /www/htdocs/inc
echo $path_parts['basename'], "\n";   # returns: lib.inc.php
echo $path_parts['extension'], "\n";  # returns: php
echo $path_parts['filename'], "\n";   # returns: lib.inc  | since PHP 5.2.0
?>

或者您可以将标志设置为仅获取扩展名,如下所示:

$extension = pathinfo('/www/htdocs/inc/lib.inc.php', PATHINFO_EXTENSION);
echo $extension; # prints `php` to the screen.

答案 1 :(得分:2)

如果您想确保上传了有效图片,请不要依赖文件结尾,这可能会被篡改。您可以使用PHP图像函数来确保文件确实是图像,例如:

function is_image($path) {
    $a = getimagesize($path);
    $image_type = $a[2];

    if(in_array($image_type , array(IMAGETYPE_GIF , IMAGETYPE_JPEG ,IMAGETYPE_PNG , IMAGETYPE_BMP)))
    {
         return true;
    }
    return false;
 }

答案 2 :(得分:1)

试试这个,

$ext = pathinfo('abc.jpeg' ,PATHINFO_EXTENSION);