我有一个页面,我想列出用户上传的所有文档,并希望从列出的每个项目中删除该扩展名。
此列表将包含可能无限的文件类型,因此我使用手动指定和替换扩展名的方法将花费太长时间。
我还尝试在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指定为要删除的文件扩展名,但我想尝试更通用的方法,并删除所有文件扩展名。
有人可以提出这方面的建议吗?
答案 0 :(得分:4)
您可以使用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>";
}
答案 1 :(得分:0)
您可以将所有可能的扩展名放入数组中,并将其替换为循环数组。就像是: $ ext = array(pdf,db等等);
答案 2 :(得分:0)
按'拆分'。'并删除最后一项,然后将其重新组合在一起。
<?php
$chkdir = is_dir("/secure/user uploads/".$_SESSION['SESS_MEMBER_ID']."");
$path = "$chkdir/";
foreach (glob("$path*") as $filename) {
$result = str_replace("$path","", $filename);
$t = explode('.',$result);
if(count($t) > 1) array_pop($t);
$result = implode('.',$t);
echo "<li><a href='" . $filename ."'/>". $result . "</a></li><tr>";
}
?>
答案 3 :(得分:0)
<?
$path = "./";
foreach (glob("$path*") as $filename) {
$result = str_replace("$path","", $filename);
$result = strip_ext($result, "php", "js");
echo "<li><a href='" . $filename ."'/>". $result . "</a></li><tr>";
}
function strip_ext($file) {
$args = func_get_args();
for ($i = 1; $i < count($args); $i++) {
$ext = $args[$i];
$ext_pos = strrpos($file, '.' . $ext);
//The extension must exist and be at the end of the file name.
if ($ext_pos != false && $ext_pos + strlen($ext) == strlen($file) - 1) {
return(substr($file, 0, $ext_pos));
}
}
return($file);
}
?>
答案 4 :(得分:0)
5.2版(2013年3月5日)增加PATHINFO_FILENAME
常量。
- 对于没有路径和扩展名的文件名
在一行代码中:
$filename = pathinfo("$path", PATHINFO_FILENAME);
您:
foreach (glob("$path*") as $filename) {
echo "<li><a href='" . $filename ."'/>". pathinfo($filename, PATHINFO_FILENAME) . "</a></li><tr>";
}