获取Php文件/图像扩展名

时间:2012-11-19 14:13:11

标签: php

我正在尝试获取图片文件扩展名并添加一些随机数。 喜欢 348678423.jpeg,343344343.jpg,32434343.gif,3434343.png等..

以下是我的php代码:

function getExtension($str)
{
     $i = strrpos($str,".");
 if (!$i) { return ""; }
 $l = strlen($str) - $i;
 $ext = substr($str,$i+1,$l);
 return $ext;
}
  @$extension = getExtension($file);
   $extension = strtolower($extension);
  $image_named_uniq = uniqid().'.'.$extension;  

但是当我回应这个变量 $ image_named_uniq 时,它只显示随机数,如: 50aa5a2e0f425。它应该显示 50aa5a2e0f425.jpg 等。

我的代码有什么问题?

4 个答案:

答案 0 :(得分:5)

如果您只需要扩展程序:

echo end(explode('.', $str));

答案 1 :(得分:2)

您可以使用pathinfo()获取扩展程序

$path_parts = pathinfo($filename);
echo $path_parts['extension'];

答案 2 :(得分:1)

@jereon发布的答案是正确的,也是最简单的方法。

但是,如果您想在不使用explode和end的情况下提取有关该文件的更多信息,则可以使用pathinfo()函数内置的PHP。

参考:pathinfo()

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

    echo $path_parts['dirname'], "\n";
    echo $path_parts['basename'], "\n";
    echo $path_parts['extension'], "\n";
    echo $path_parts['filename'], "\n"; // since PHP 5.2.0
?>

这将返回

/www/htdocs/inc
lib.inc.php
php
lib.inc

由于$filename是一个数组,您需要遍历它才能将其读入pathinfo()。这可以使用类似的foreach循环非常容易地完成:

// Loop through the filenames array
foreach($filename as $value){
    // Retrieve the path parts of each individual file
    $path_parts[] = pathinfo($value);
}

// Write out the path parts array
print_r($path_parts);

答案 3 :(得分:0)

最简单的方法是使用pathinfo()。请注意,结果基于文件名,并且不会对文件进行内省(例如,重命名为logo.jpg的图像logo.php将导致.php文件扩展名。使用{{3如果你想通过它的内容得到文件类型)