13

可能重复:
如何从字符串中删除扩展名(只有真正的扩展名!)

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

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

非常感谢!

4

3 回答 3

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包含不带扩展名的文件名

于 2013-01-07T21:58:48.173 回答
8

你可以使用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'

?>
于 2013-01-07T22:00:17.597 回答
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 手册。

于 2013-01-07T22:12:10.860 回答