2011-03-18 115 views
0

我有这个代码,它取得目录中文件的名称,然后创建一个链接到这些文件。但是,链接中的文本末尾具有文件扩展名。我想删除这一点,但同时保持了正确的链接到文件,即HTML链接需要延长留在它 - 这样的:在PHP中删除文件扩展名,同时创建一个链接

<a href="/documents/other/file.pdf">File</a> 

因此,这里是我的脚本:

$linkdir="documents/other"; 
$dir=opendir("documents/other"); 

$files=array(); 

while (($file=readdir($dir)) !== false) 
{ 
    if ($file != "." and $file != ".." and $file != "index.php") 
    { 
    array_push($files, $file); 
    } 
} 

natcasesort($files); 
$files=array_reverse($files); 

foreach ($files as $file) 
print "<li><a href='/$linkdir/$file' rel='external'>$file</a></li>"; 

这里是我需要整合删除的文件扩展名的代码:

$name = substr($file, 0, strrpos($file, '.')); 

任何帮助,这将不胜感激。

+0

如果你已经有了代码,那么问题是什么? – Nanne 2011-03-18 09:00:12

回答

2

你是说你想要这个吗?

foreach ($files as $file){ 
    $name = substr($file, 0, strrpos($file, '.')); 
    print "<li><a href='/$linkdir/$file' rel='external'>$name</a></li>"; 
} 

我无法找到任何其他问题,您的文章:)

+0

是的!完全是这样的 - 我确信我尝试过,但它没有工作LOL。非常感谢你! – Jonathan 2011-03-18 09:27:31

+0

也许你没有添加openstache/nearestache? – Nanne 2011-03-18 09:29:17

1

使用pathinfo()是一个更强大的解决方案,在某些情况下,文件的名称与更多的点(如someclass.inc.php):

$parts = pathinfo($file); 
$name = $parts['basename'];