我正在尝试获取图片文件扩展名并添加一些随机数。 喜欢 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 等。
我的代码有什么问题?
答案 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如果你想通过它的内容得到文件类型)