这是一个你可以在网上到处阅读的问题,有各种答案:
$ext = end(explode('.', $filename));
$ext = substr(strrchr($filename, '.'), 1);
$ext = substr($filename, strrpos($filename, '.') + 1);
$ext = preg_replace('/^.*\.([^.]+)$/D', '$1', $filename);
$exts = split("[/\\.]", $filename);
$n = count($exts)-1;
$ext = $exts[$n];
Run Code Online (Sandbox Code Playgroud)
等等
但是,总有"最好的方法",它应该在Stack Overflow上.
我正在为照片网站构建上传器,大多数上传的照片的类型为1232132_1231231_12.jpg。当我运行pathinfo()时,得到扩展的空白输出。
这是我的代码
$target_dir = "Photos/";
$species = filter_input(INPUT_POST, 'species');
$country = filter_input(INPUT_POST, 'country');
$type= filter_input(INPUT_POST, 'type');
include_once 'connection.php';
echo $target_dir . basename($_FILES["file"]["name"]);
for($a=0;$a<count($_FILES['file']['tmp_name']);$a++)
{
$target_file = $target_dir . basename($_FILES["file"]["name"][$a]);
$imageFileType=pathinfo($target_file, PATHINFO_EXTENSION);
var_dump(pathinfo($target_file));
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif" )
{
echo "<br> Sorry, only JPG, JPEG, PNG & GIF files are allowed. your file is a $imageFileType <br>";
}
}
Run Code Online (Sandbox Code Playgroud)
照片/ 2014-02-21 18.19.08.jpg
echo $target-file;
Run Code Online (Sandbox Code Playgroud)
给出此输出Photos / 2014-02-21 18.19.08.jpg
对于var_dump,它被回显到屏幕上,array(3){[“ dirname”] …
我现在正在建立一个小网站,用户可以上传他们自己的个人资料图片,但很明显一些用户图片将是png和一些jpeg,有人知道无论如何能够接受两者在css中使用图像作为背景图像.这是我的HTML:
<div class='avatar' style='background-image: url('users/avatars/$username.jpg')'></div>
Run Code Online (Sandbox Code Playgroud)
在users/avatars /文件夹中,每个用户的个人资料图片都是这样命名的:"username.jpg"或"username.png".
这是我的问题的一个例子:http://cl.ly/image/3W311S2v0v0t
第一个帖子加载用户个人资料图片,因为它是一个jpeg,但第二个帖子没有加载个人资料图片,因为它是一个png.
提前致谢.
尽管未显示的$ _FILES数组,这是用于文件上传,我曾与文件上传的问题,所以我没能获得$ _FILES数组的[类型]的部分呢......但是这仅仅是一个简单的为什么这个功能不起作用的问题......
<?php
function getExtension() {
// global $testFile;
$extension = "./mp3/"; // also tried simply mp3 without the forwards slashes
$testFile = "song.mp3";
if(preg_match($extension, $testFile)) {
echo "match found";
}else {
echo "no match found";
}
}
getExtension();
?>
Run Code Online (Sandbox Code Playgroud)