ftp_nlist -- 返回给定目录的文件列表
array ftp_nlist ( resource ftp_stream, string directory)
如果成功则返回给定目录下的文件名组成的数组,否则返回 FALSE
Here comes an example. Make sure you have the ftp connection. $dir=ftp_pwd($connid);
$list=Array();
$list=ftp_nlist($connid, "$dir");
$i=0; do{
echo $list[$i], "
"; $i++;
}while($list[$i]);
array ftp_nlist ( resource ftp_stream, string directory)
如果成功则返回给定目录下的文件名组成的数组,否则返回 FALSE
Here comes an example. Make sure you have the ftp connection. $dir=ftp_pwd($connid);
$list=Array();
$list=ftp_nlist($connid, "$dir");
$i=0; do{
echo $list[$i], "
"; $i++;
}while($list[$i]);
解决方案 »
- 关于时间戳的问题
- 请教一个二维数组排序问题
- 请高手帮忙!!函数绝对难题
- 我自己写的一套程序,做好了整合UC,就是不能接收同步更改密码
- 求问PHP类跨文件继承的问题
- 有关三元操作符
- php为何连接不上ms sqlserver 2000?
- MYSQL的特殊字符怎么处理?
- 想不通:php文件中用session_start(),为什么IE中每新(tarteg="_blank"或window.open)开一页就会新生成一个session文件呢?
- ajax返回的信息在其他标签能正确显示,但在INPUT输入框却显示AJAX返回的HTML源码
- php如何添加js?
- 请问smarty模板怎么用,他的速度比phplib快吗?
ftp_nlist只能列出文件列表
但是不能列出目录~!!
$dir=ftp_pwd($this->conn_id);
@ftp_chdir($this->conn_id, $dir);
$dir = ftp_pwd($this->conn_id);
$list=Array();
$list=ftp_nlist($this->conn_id, "$dir");
$files = Array();
$folders = Array();
for($i = 0; $i != sizeof($list); $i++)
{
$entry = str_replace("//", "", $list[$i]);
if(@ftp_chdir($this->conn_id, $entry))
{//目录
$folders[] = $entry;
ftp_chdir($this->conn_id, $dir);
}
else
{
$files[] = $entry;
}
}
$list = Array();
$list = ftp_nlist($conn_id, "$cartella");
while(list($chiave,$valore) = each($list)) {
$dir = $conn_id."/".$valore;
if( is_dir($dir) && $dir != "." && $dir != "..") {
//$dir是目录
}
}
$dir=ftp_pwd($this->conn_id);
$dirlist = ftp_rawlist($conn_id,"$dir");
for($i=0;$i<count($dirlist);$i++) {
$$dirline=$dirlist[$i]; $dirline=ereg_replace(" +",' ',$dirline);
$isdir=0;
if (ereg('^d',$dirline))
{
//$dirline是目录
}
}
如果说ftp_nlist不单单返回文件列表,返回值中还包含目录列表
那么用下面的语句为什么只能列出文件,却没有目录
$list=ftp_nlist($ftp,ftp_pwd($ftp));
for($i=0;$i<count($list);$i++)
{echo $list[$i];}
$cartella = ftp_pwd($conn_id);
$list = Array();
$list = ftp_nlist($conn_id, "$cartella");
while(list($chiave,$valore) = each($list)) {
$dir = $conn_id."/".$valore;
if( is_dir($dir) && $dir != "." && $dir != "..") {
//$dir是目录
}
}
{ ftp_login($ftp, "user", "pwd");
$sArray= ftp_rawlist($ftp, "./");
for($i=0;$i<count($sArray);$i++)
{
if($sArray[$i][0]=="d") echo "$sArray[$i]";//这时候显示出来的就是文件夹的名字
}
}这个方法从原理上来讲是个笨方法:
把目录下面说得文件和文件夹的名字都写道一个数组sArray里面。PHP获得一个文件或者一个文件夹的信息的时候,放在变量最前头的都是有关于这个文件和文件夹的属性,比如要是文件必然是以d......什么什么开头的。你可以打印出来看看,具体的我忘了。通过这个标志,你就能判断出哪个东西是文件哪个是文件夹了。以前我写过一个用PHP来管理FTP的页面,就是这么判断的
谢谢你,这种方法的确可以判断出哪个是文件夹
但是我只想列出文件夹的名字改怎么办??
echo "$sArray[$i]";
这个输出的还包括与文件夹有关的一些信息
怎么把这些没用得去掉??
$dir=ftp_pwd($this->conn_id);
$dirlist = ftp_rawlist($conn_id,"$dir");
for($i=0;$i<count($dirlist);$i++) {
$$dirline=$dirlist[$i]; $dirline=ereg_replace(" +",' ',$dirline);
$isdir=0;
if (ereg('^d',$dirline))
{
//$dirline是目录
}
}
/////////////////////////////////////////////////////////////////////////////////////////
// Directory list Class //
// Written by Robert Boone //
/////////////////////////////////////////////////////////////////////////////////////////
// //
// This is a basic class to list the content of directories. //
// This class is written for UNIX file systems but could work in //
// DOS with a few changes. //
// //
// //
// //
// Method SetDir($path) - Path of directory: Returns nothing //
// Method GetAll() - Gets list of folders and files in set directory: Returns Array //
// Method GetFolders() - Gets list of all folders in set directory: Returns Array //
// Method GetFiles() - Gets list of all files in set directory: Returns Array //
// Method GetFiles($ext) - Gets list of files with .$ext: Returns Array //
// //
/////////////////////////////////////////////////////////////////////////////////////////
class Dir {
// private
var $FOLDERS = array();
var $FILES = array();
var $ALL = array();
var $DIR;
// public
function SetDir($dir) {
$this->DIR = escapeshellcmd($dir);
} function GetAll() {
unset($this->ALL);
exec("ls ".$this->DIR,$filename); for ($count = 0; $count <= (sizeof($filename)-1); $count++) {
$this->ALL[] = $filename[$count];
}
return $this->ALL;
}
function GetFolders() {
unset($this->FOLDERS);
exec("ls ".$this->DIR,$filename); for ($count = 0; $count <= (sizeof($filename)-1); $count++) {
if (is_dir($this->DIR."/".$filename[$count])) {
$this->FOLDERS[] = $filename[$count];
}
}
return $this->FOLDERS;
} function GetFiles() {
unset($this->FILES);
exec("ls ".$this->DIR,$filename); for ($count = 0; $count <= (sizeof($filename)-1); $count++) {
if (is_file($this->DIR."/".$filename[$count])) {
$this->FILES[] = $filename[$count];
}
}
return $this->FILES;
} function GetFiles($include) {
unset($this->FILES);
exec("ls ".$this->DIR,$filename);
for ($count = 0; $count <= (sizeof($filename)-1); $count++) {
if (is_file($this->DIR."/".$filename[$count]) AND eregi($include, $filename[$count])) {
$this->FILES[] = $filename[$count];
}
}
return $this->FILES;
}}
?>
$Arr = split(" ", $sArray[$i]);来切开每段信息获得文件名称
如果文件夹的名字中间有空格改怎么办??
$Arr = split(" ", $sArray[$i]);
岂不是把文件夹名字也给分开了??