我试图从循环中的每个文件名中删除文件扩展名,这样ball.jpg可以作为球回应,但它不适用于我
我有这段代码
$files = array();
foreach($src_files as $file)
{
$ext = strrchr($file, '.');
if(in_array($ext, $extensions))
{
array_push( $files, $file);
$thumb = $src_folder.'/'.$file;
$fileName = basename($file);
$place = preg_replace("/\.[^.]+$/", "", $fileName);
}
}
答案 0 :(得分:2)
试试这个:
$src_files = array('/tmp/path/file1.txt', '/tmp/path/file2.txt.php', '/tmp/not.ext');
$extensions = array('.txt', '.php');
$files = array();
foreach ($src_files as $file)
{
$ext = strrchr($file, '.');
var_dump($ext);
if (in_array($ext, $extensions))
{
array_push($files, $file);
//$thumb = $src_folder.'/'.$file;
$pathInfo = pathinfo($file);
$fileName = $pathInfo['basename'];
$place = $pathInfo['filename'];
var_dump($pathInfo);
}
}
如果您只想要文件名而不使用扩展名,请使用pathinfo($fileName, PATHINFO_FILENAME);
。有关详细信息,请参阅here。
如果您不想使用pathinfo()
,您还可以使用字符串操作技术:
$place = substr($fileName, 0 , (strrpos($fileName, ".")));
strrpos()
与strpos()
类似,但会搜索从字符串末尾开始并向后工作的字符。