php - 使用 glob 进行回显时使用 str_replace 删除扩展名

标签 php string glob

我有一个页面,我想在其中列出用户已上传的所有文档,并希望从列出的每个项目中删除扩展名。

此列表将包含潜在无限的文件类型,因此我使用的手动指定扩展名并将其替换为空的方法将花费太长时间。

我还尝试对 .* 执行 str_replace ,以便替换 . 之后的任何内容,但这似乎不起作用.

这是我所拥有的:

<?php 
$chkdir = is_dir("/secure/user uploads/".$_SESSION['SESS_MEMBER_ID']."");
$path = "$chkdir/";
foreach (glob("$path*") as $filename) { 
$result = str_replace("$path","", $filename); 
$result = str_replace(".pdf","", $result); 
$result = str_replace(".db","", $result); 
echo "<li><a href='" . $filename ."'/>". $result . "</a></li><tr>"; 
} 
?>

您可以在接近尾声时看到我指定了 PDF 和 DB 作为要删除的文件扩展名,但我想尝试更通用的方法,并删除所有文件扩展名。

有人可以提供建议吗?

最佳答案

您可以使用pathinfo() .

来自 PHP 手册示例:

$path_parts = pathinfo('/www/htdocs/inc/lib.inc.php');
echo $path_parts['filename']; // lib.inc

适用于您的情况:

foreach (glob("$path*") as $filename) { 
  $path_parts = pathinfo($filename); 
  $result = $path_parts['filename']; 
  echo "<li><a href='" . $filename ."'/>". $result . "</a></li><tr>"; 
} 

关于php - 使用 glob 进行回显时使用 str_replace 删除扩展名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8579049/

相关文章:

php - 试图从 laravel 5 中的 mysql 获取数据以显示

php - jQuery、JSON、PHP 和 gMap

Ruby:将变量合并到字符串中

mysql - 在 SQL 中比较两封电子邮件的域

java - Eclipse 运行配置中的通配符扩展

php - 更新下拉列表的内容 Javascript/PHP

php - 网页实现excel另存为的最佳方法

python - 在python中将字符串/字符转换为整数

Ruby:Dir.glob 不返回任何文件

glob - 带有 logrotate 的文件名全局选项