从文件中删除扩展名

时间:2013-01-07 21:55:48

标签: php function filenames

  

可能重复:
  How remove extension from string (only real extension!)

我是php的新手,还有很多需要学习的东西!我正在为King County Iris Society网站试验MiniGal Nano。它可以很好地用于我们的目的,只有一个小例外:照片文件名称需要在缩略图下可见。我创建了一个解决方案,但它显示了扩展。我找到了函数的代码示例,但不知道如何将它们合并到现有代码中。非常感谢任何帮助。

示例链接:http://www.kcis.org/kcisphotogallery.php?dir=Iris.Japanese

非常感谢!

3 个答案:

答案 0 :(得分:30)

有几种方法可以做到,但我认为其中一种更快捷的方法是以下

// $filename has the file name you have under the picture
$temp = explode('.', $filename);
$ext  = array_pop($temp);
$name = implode('.', $temp);

另一种解决方案就是这样。我没有对它进行测试,但看起来它应该在文件名中的多个句点中起作用

$name = substr($filename, 0, (strlen($filename))-(strlen(strrchr($filename, '.'))));

此外:

$info = pathinfo($filename);
$name = $info['filename'];
$ext  = $info['extension'];

// Shorter
$name = pathinfo($file, PATHINFO_FILENAME);

// Or in PHP 5.4
$name = pathinfo($filename)['filename'];

在所有这些中,$name包含没有扩展名

的文件名

答案 1 :(得分:7)

您可以使用pathinfo()

<?php

// your file
$file = 'image.jpg';

$info = pathinfo($file);

// from PHP 5.2.0 :
$file_name = $info['filename'];

// before PHP 5.2.0 :
// $file_name =  basename($file,'.'.$info['extension']);

echo $file_name; // outputs 'image'

?>

答案 2 :(得分:3)

如果您确定文件扩展名总是长达四个字符(例如“.jpg”),则只需使用substr()输出文件名:

echo substr($filename, 0, -4);

如果文件扩展名中有可能包含更多或更少字符的图像(例如“.jpeg”),则需要找出上一个句点的位置。由于您从第一个字符输出文件名,因此该句点的位置可用于指示您要显示的字符数:

$period_position = strrpos($filename, ".");
echo substr($filename, 0, $period_position);

有关这些功能的信息,请查看http://php.net/substrhttp://php.net/strrpos上的PHP手册。

相关问题