从文件名中删除扩展名并包含目录中的所有文件

时间:2014-05-22 09:15:11

标签: php foreach dir pathinfo

我在论坛上看了但没找到我需要的东西。 我需要帮助从文件名中删除扩展名,并包含目录中的所有文件(php文件),并向您展示示例。

此代码工作

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

echo "Name: {$fileName}";

Results:

Name: file

但如何使用文件夹

中包含的多个文件来获取此信息
<?php          
$dir = "/dir1/dir2/dir3/dir4/";
$phpfiles = glob($dir . "*.php");

foreach ($phpfiles as $phpfile){

     echo '<li><a href="'.$phpfile.'">'.basename($phpfile,".php").'</a></li>'; 
}
output
1.php
2.php
3.php
4.php
-----------------
how to insert path info in this script so that all files are included without extensions.
?>

2 个答案:

答案 0 :(得分:1)

使用pathinfo函数...... ??

<?php          
$dir = "/dir1/dir2/dir3/dir4/";
$phpfiles = glob($dir . "*.php");

foreach ($phpfiles as $phpfile){
     echo '<li><a href="'.$phpfile.'">'.pathinfo($phpfile, PATHINFO_FILENAME).'</a></li>'; 
}

答案 1 :(得分:0)

如果您只想显示文件名,可以使用@ zavg的建议(只需添加.)。如果您想要实际修改数组以供以后使用,可以使用array_map

$dir = "/dir1/dir2/dir3/dir4/";
$phpfiles = glob($dir . "*.php");
//using basename
$phpfiles=array_map(function($f){return basename($f, ".php");},$phpfiles);
//Or Using pathinfo
//$phpfiles=array_map(function($f){return pathinfo($f, PATHINFO_FILENAME );},$phpfiles);
foreach ($phpfiles as $phpfile){
     echo '<li><a href="'.$dir.$phpfile.'">'.$phpfile.'</a></li>'; 
}