如是。有一个文件,文件名是“新建文本文档.txt”;放在网站的“/”下,用include包含文件时,也无法读取文件(文件不是空的)。用is_file()检测出是false。但是文件是存在的。不知道怎样才能用unlink把“新建文本文档.txt”这个文件删除了。
现在要解决的是is_file或unlink对文件名中有中文的文件的识别。只要能识别出来就可以删除了。
现在要解决的是is_file或unlink对文件名中有中文的文件的识别。只要能识别出来就可以删除了。
用is_file去判断含全角文字文件名的文件是没有问题的
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
</head>
<body>
<?php
//显示垃圾文件内容
$file="C:\\Program Files\\Apache Software Foundation\\Apache2.2\\htdocs\\xflm2\\news\\contents\\新建文本文档.txt";
$file=iconv('gb2312','utf-8',$file);
//echo "OK";//$msg=unlink("C:\\Program Files\\Apache Software Foundation\\Apache2.2\\htdocs\\xflm2\\news\\contents\\新建文本文档.txt");
if(is_file($file))
$msg="yes";
else $msg="no-";
echo "ok2-";
//unlink(iconv('gb2312','utf-8','新建文本文档.txt'));
die($msg);
?>
结果显示的是:“ok2-no-”;
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
$del=$_GET['del'];
if($del!="" && $del!=null){
$delfile=dirname(__FILE__)."/test/$del";
$msg=unlink($delfile);
echo "del file: $delfile<br />";
if($msg)
echo "<script type='text/javascript'>alert('成功删除文件');</script>";
else
echo "<script type='text/javascript'>alert('删除文件失败');</script>";
}$flist=fileList(dirname(__FILE__)."/test");
if(count($flist)>0){
echo "<table><tr><td>文件列表</td><td>操作</td></tr>\n";
for($i=0;$i<count($flist);$i++)
echo "<tr><td>".$flist[$i]."</td><td><a href='".$_SERVER['PHP_SELF']."?del=".$flist[$i]."'>删除</a></td></tr>\n";
echo "</table>";
}else
echo "<h1>未发现文件!</h1>";/**
* 文件列表
* @param string $dir 文件夹
* @return 字符串数组
*/
function fileList($dir){ //文件列表
@$handle=opendir($dir);
$i=0;
while (@$file = readdir($handle)) {
if(!is_dir($file) && !is_link($file)) {
$filelist[$i++]=iconv("gb2312","utf-8",$file);
}
}
return $filelist;
}
?>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset:GB2312">
<title>filelist</title>
</head>
<body><?php
$del=$_GET['del'];
if($del!="" && $del!=null){
$delfile=dirname(__FILE__);
$msg=unlink($delfile);
echo "del file: $delfile<br />";
if($msg)
echo "<script type='text/javascript'>alert('成功删除文件');</script>";
else
echo "<script type='text/javascript'>alert('删除文件失败');</script>";
}$flist=fileList(dirname(__FILE__));
if(count($flist)>0){
echo "<table><tr><td>文件列表</td><td>操作</td></tr>\n";
for($i=0;$i<count($flist);$i++)
echo "<tr><td>".$flist[$i]."</td><td><a href='".$_SERVER['PHP_SELF']."?del=".$flist[$i]."'>删除</a></td></tr>\n";
echo "</table>";
}else
echo "<h1>未发现文件!</h1>";/**
* 文件列表
* @param string $dir 文件夹
* @return 字符串数组
*/
function fileList($dir){ //文件列表
@$handle=opendir($dir);
$i=0;
while (@$file = readdir($handle)) {
if(!is_dir($file) && !is_link($file)) {
//$filelist[$i++]=iconv("gb2312","utf-8",$file);
$filelist[$i++]=$file;
}
}
return $filelist;
}
?></body>
</html>
实现功能:查找程序所在目录下所有文件,并提供删除功能。可是,只要文件名中有中文就不能删除。
这样就对了
$msg=unlink($delfile);-------------------你在删除什么?
win:gbk
linux/unix...:utf-8
UNLINK($FName);