PHP - 从文件名字符串中剥离扩展名

boi*_*ert 10 php string

我想从文件名中删除扩展名,并获取文件名 - 例如file.xml - > file,image.jpeg - > image,test.march.txt - > test.march等.

所以我写了这个函数

function strip_extension($filename) {
   $dotpos = strrpos($filename, ".");
   if ($dotpos === false) {
      $result = $filename;
   }
   else {
      $result = substr($filename,0,$dotpos);
   }
   return $result;
}
Run Code Online (Sandbox Code Playgroud)

返回一个空字符串.

我看不出我做错了什么?

Bra*_*tie 22

寻找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
?>
Run Code Online (Sandbox Code Playgroud)

结果:

/www/htdocs/inc
lib.inc.php
php
lib.inc
Run Code Online (Sandbox Code Playgroud)

让自己头疼并使用已经构建的功能.;-)

  • 问题是,OP只有文件**名称**,而不是文件**的完整**路径. (2认同)

Rob*_*bik 6

你应该用pathinfo它来做那件事.

示例: 使用的东西:pathinfo()

$name = 'file.php';

$pathInfo = pathinfo($name);

echo 'Name: '. $pathInfo['filename'];
Run Code Online (Sandbox Code Playgroud)

结果:

Name: file
Run Code Online (Sandbox Code Playgroud)

例2(更短)

$name = 'file.php';    
$fileName= pathinfo($name, PATHINFO_FILENAME );

echo "Name: {$fileName}";
Run Code Online (Sandbox Code Playgroud)

结果:

Name: file
Run Code Online (Sandbox Code Playgroud)

活生生的实例: 1号 | 第2号