當前位置:首頁 » 編程語言 » php目錄類

php目錄類

發布時間: 2022-07-13 03:17:46

A. php目錄操作實例代碼

這篇文章主要介紹了php目錄操作實例代碼,需要的朋友可以參考下
代碼如下:
<?php

/**

*
listdir

*/

header("content-type:text/html;charset=utf-8");

$dirname
=
"./final/factapplication";

function
listdir($dirname)
{

$ds
=
opendir($dirname);

while
(false
!==
($file
=
readdir($ds)))
{

$path
=
$dirname.'/'.$file;

if
($file
!=
'.'
&&
$file
!=
'..')
{

if
(is_dir($path))
{

listdir($path);

}
else
{

echo
$file."<br>";

}

}

}

closedir($ds);

}

listdir($dirname);

核心:遞歸的經典應用,以及文件和目錄的基本操作。

代碼如下:
<?php

/**

*
dir

*/

$srcdir
=
"../fileupload";

$dstdir
=
"b";

function
dir($srcdir,
$dstdir)
{

mkdir($dstdir);

$ds
=
opendir($srcdir);

while
(false
!==
($file
=
readdir($ds)))
{

$path
=
$srcdir."/".$file;

$dstpath
=
$dstdir."/".$file;

if
($file
!=
"."
&&
$file
!=
"..")
{

if
(is_dir($path))
{

dir($path,
$dstpath);

}
else
{

($path,
$dstpath);

}

}

}

closedir($ds);

}

dir($srcdir,
$dstdir);

核心:函數。

代碼如下:
<?php

/**

*
deldir

*/

$dirname
=
'a';

function
deldir($dirname)
{

$ds
=
opendir($dirname);

while
(false
!==
($file
=
readdir($ds)))
{

$path
=
$dirname.'/'.$file;

if($file
!=
'.'
&&
$file
!=
'..')
{

if
(is_dir($path))
{

deldir($path);

}
else
{

unlink($path);

}

}

}

closedir($ds);

return
rmdir($dirname);

}

deldir($dirname);

核心:注意unlink刪除的是帶path的file。

代碼如下:
<?php

/**

*
dirsize

*/

$dirname
=
"a";

function
dirsize($dirname)
{

static
$tot;

$ds
=
opendir($dirname);

while
(false
!==
($file
=
readdir($ds)))
{

$path
=
$dirname.'/'.$file;

if
($file
!=
'.'
&&
$file
!=
'..')
{

if(is_dir($path))
{

dirsize($path);

}
else
{

$tot
=
$tot
+
filesize($path);

}

}

}

return
$tot;

closedir($ds);

}

echo
dirsize($dirname);

核心:通過判斷$tot在哪裡返回,理解遞歸函數。

B. PHP怎麼自動載入同一目錄下同一命名空間的類文件

自動載入的,只有在實例化時才會真的載入。實例化時,調用公共空間的方式是直接在元素名稱前加
\
就可以了,否則PHP解析器會認為我想調用當前空間下的元素。

C. php遞歸獲取目錄內文件封裝類分享

php遞歸獲取目錄內文件封裝類分享,可以遞歸子目錄
代碼如下:

代碼如下:
function
readFileFromDir($dir)
{

if
(!is_dir($dir))
{

return
false;

}

//打開目錄

$handle
=
opendir($dir);

while
(($file
=
readdir($handle))
!==
false)
{

//排除掉當前目錄和上一個目錄

if
($file
==
"."
||
$file
==
"..")
{

continue;

}

$file
=
$dir
.
DIRECTORY_SEPARATOR
.
$file;

//如果是文件就列印出來,否則遞歸調用

if
(is_file($file))
{

print
$file
.
'<br
/>';

}
elseif
(is_dir($file))
{

readFileFromDir($file);

}

}
}

調用方式:

代碼如下:
$dir
=
'/home/www/test';
readFileFromDir($dir);

查看php手冊的話,還有一個方法scandir也可以使用,不過這個方法會一次性獲取單級目錄下的所有文件,存放到數組里,如果目錄里的文件比較多的話,會卡。

D. php中目錄操作opendir()、readdir()及scandir()用法示例

本文實例講述了php中目錄操作opendir()、readdir()及scandir()用法。分享給大家供大家參考,具體如下:
opendir(path,context)若成功,則該函數返回一個目錄流,否則返回
false
以及一個
error。可以通過在函數名前加上
「@」
來隱藏
error
的輸出。
readdir()
函數返回由
opendir()
打開的目錄句柄中的條目。若成功,則該函數返回一個文件名,否則返回
false。
scandir()
函數返回一個數組,其中包含指定路徑中的文件和目錄。
若成功,則返回一個數組,若失敗,則返回
false。如果
directory
不是目錄,則返回布爾值
false
付上2段搜到的讀取目錄的代碼,親測有效
顯示目錄中文件名
//
打開目錄,然後讀取其內容
if
(is_dir($dir)){
if
($dh
=
opendir($dir)){
while
(($file
=
readdir($dh))
!==
false){
echo
"filename:"
.
$file
.
"<br>";
}
closedir($dh);
}
}
拷貝一個目錄的文件到另一個目錄
_dir($from_dir,$to_dir);
function
_dir($from_dir,$to_dir){
if(!is_dir($from_dir)){
return
false;
}
echo
"\r\n
from:",$from_dir,'---to',$to_dir;
$from_files
=
scandir($from_dir);
//如果不存在目標目錄,則嘗試創建
if(!file_exists($to_dir)){
@mkdir($to_dir);
}
if(!empty($from_files)){
foreach
($from_files
as
$file){
if($file
==
'.'
||
$file
==
'..'
){
continue;
}
if(is_dir($from_dir.'/'.$file)){//如果是目錄,則調用自身
_dir($from_dir.'/'.$file,$to_dir.'/'.$file);
}else{//直接到目標文件夾
($from_dir.'/'.$file,$to_dir.'/'.$file);
}
}
}
}
更多關於PHP相關內容感興趣的讀者可查看本站專題:《PHP目錄操作技巧匯總》、《php文件操作總結》、《PHP常用遍歷演算法與技巧總結》、《PHP數據結構與演算法教程》、《php程序設計演算法總結》、《PHP數組(Array)操作技巧大全》、《php字元串(string)用法總結》及《php常見資料庫操作技巧匯總》
希望本文所述對大家PHP程序設計有所幫助。
您可能感興趣的文章:使用PHP函數scandir排除特定目錄PHP獲取當前文件所在目錄
getcwd()函數php文件夾與文件目錄操作函數介紹php中判斷文件空目錄是否有讀寫許可權的函數代碼PHP解析目錄路徑的3個函數總結PHP使用glob函數遍歷目錄或文件夾的方法php
file_exists
檢查文件或目錄是否存在的函數PHP遍歷目錄函數opendir()、readdir()、closedir()、rewinddir()總結PHP刪除非空目錄的函數代碼小結PHP目錄函數實現創建、讀取目錄教程實例php使用scandir()函數掃描指定目錄下所有文件示例

E. 現在大型php程序目錄結構一般怎麼安排

PHP之所以能在web開發語言中排名靠前,不僅僅是因為語法簡單,上手容易。我個人認為更多是因為其語言本身的:模塊的易擴展性,可維護性以及內存安全管理等特點。寫過PHP的程序員不一定都知道:PHP是如何執行的?其組織結構目錄的作用?如果對其有所了解,對PHP的認識會更深入,寫出的代碼也會更高效,更健壯......
1. build 和編譯有關的目錄。
2. ext 擴展庫代碼,例如 mysql、zlib、iconv 等我們熟悉的擴展庫。其中/ext/standard/ 目錄下是常用的標准函數集。
3. main 主目錄包含主要的 PHP 宏和定義。
4. sapi 和各種伺服器的介面調用,例如apache、IIS等,也包含一般的fastcgi、cgi等。
5. win32 和 Windows 下編譯 PHP 有關的腳本
6. Zend 文件夾核心的引擎,所有的 Zend API 定義與宏等。
7. scripts Linux 下的腳本目錄。
8. tests 測試腳本目錄
9. sapi 各類 Web 伺服器的介面。
10.TSRM Zend 和 PHP 的 「線程安全資源管理器」 (TSRM) 目錄。
11.pear 這個目錄就是「PHP 擴展與應用倉庫」的目錄。包含了PEAR 的核心文件。

其中幾個重要的文件絕對值得你共時間去了解:
php-src/main/php.h, 位於PHP 主目錄。這個文件包含了絕大部分 PHP 宏及 API 定義。
php-src/Zend/zend.h, 位於 Zend 主目錄。這個文件包含了絕大部分 Zend 宏及 API 定義。
php-src/Zend/zend_API.h, 也位於 Zend 主目錄,包含了Zend API 的定義

F. 如何設置PHP擴展的目錄

當伺服器上PHP已經安裝好,需要額外添加PHP擴展時怎麼辦?不需要重新安裝PHP,有了phpize我們可以在原有的PHP基礎之上直接安裝擴展庫。
這次編譯僅僅只是單獨編譯PHP的擴展庫,接下來將編譯好的擴展庫加入到現在運行的php中,不對現在運行的php重新編譯,所以沒有一點的影響。
下面我們演示安裝xsl的擴展(不一定常用,僅做為一個範例)
做法一:
1.找到當前運行的php版本的源代碼目錄,如php-5.2.3。進入xsl擴展庫目錄。
$cd /home/pkgs/php-5.3.3/ext/xsl
2.調用phpize程序生成編譯配置文件。
$/home/app/php5.3.3/bin/phpize
3.編譯擴展庫,分別執行下面的configure和make命令。
$./configure-with-php-config=/home/app/php5.3.3/bin/php-config
這一步執行通過後,再執行make命令,如果configure執行不通過,則查找錯誤原因。
$make
#make成功執行後,生成的擴展庫文件在當前目錄的 moles子目錄下,
如/home/php-5.3.3/ext/curl/moles/xsl.so
4.配置php.ini文件
#將編譯好的擴展庫文件復制到PHP的擴展目錄下,可通過查看phpinfo信息。。
$ cp /home/pkg/php-5.3.3/ext/xsl/moles/xsl.so /home/app/php5.3.3/lib/php/extensions/no-debug-non-zts-20090626
#在php.ini文件中找到設置擴展目錄的位置,然後將擴展路徑設置到php安裝目錄/extension/no-debug-non....目錄下,並添加擴展庫位置。
extension_dir /home/app/php5.3.3/lib/php/extensions/no-debug-non-zts-20090626」
extension=xsl.so
5.重啟php,查看phpinfo信息,即可看到剛才添加進去的xsl擴展庫。(如果有多個php-fpm進程的話,平滑重啟主進程即可:kill -USR2 pid)

G. PHP刪除指定目錄中的所有目錄及文件的方法

本文實例講述了PHP刪除指定目錄中的所有目錄及文件的方法。分享給大家供大家參考。具體實現方法如下:
<?php
/*
*
*
刪除指定目錄中的所有目錄及文件(或者指定文件)
*
可擴展增加一些選項(如是否刪除原目錄等)
*
刪除文件敏感操作謹慎使用
*
@param
$dir
目錄路徑
*
@param
array
$file_type指定文件類型
*/
function
delFile($dir,$file_type='')
{
if(is_dir($dir)){
$files
=
scandir($dir);
//打開目錄
//列出目錄中的所有文件並去掉
.

..
foreach($files
as
$filename){
if($filename!='.'
&&
$filename!='..'){
if(!is_dir($dir.'/'.$filename)){
if(empty($file_type)){
unlink($dir.'/'.$filename);
}else{
if(is_array($file_type)){
//正則匹配指定文件
if(preg_match($file_type[0],$filename)){
unlink($dir.'/'.$filename);
}
}else{
//指定包含某些字元串的文件
if(false!=stristr($filename,$file_type)){
unlink($dir.'/'.$filename);
}
}
}
}else{
delFile($dir.'/'.$filename);
rmdir($dir.'/'.$filename);
}
}
}
}else{
if(file_exists($dir))
unlink($dir);
}
}
delFile(dirname(__FILE__),'html');
希望本文所述對大家的php程序設計有所幫助。

H. 關於用PHP創建文件和目錄的問題如下

php創建一個有讀寫許可權的目錄,使用以下代碼,不要直接使用mkdir函數指定許可權,以避免系統umask的影響
mkdir('./xw/');
//創建名為'xw'的目錄
chmod('./xw/',0777);//設置目錄許可權為0777

I. 關於使用php生成目錄的問題

這個邏輯很簡單,只要對目標文件夾進行文件數量判斷遞歸3次就行

幫你簡單寫了個實現函數

functiongetFile($path,$prefix,$mkdir=false)
{
$dir=scandir($path);
$index=count($dir)-2;
if($mkdir){
$name=$prefix.$index;
mkdir($path.$name);
return$path.$name;
}else{
if(!$index){
$name=$prefix.'0';
mkdir($path.$name);
}else{
$name=$dir[count($dir)-1];
if(count(scandir($path.'\'.$name))-2===5){
$name=$prefix.($index+1);
mkdir($path.$name);
};
};
return$path.$name.'\';
}
}

使用方式

for($i=0;$i<100;$i++){

//初始目錄確保是空文件夾否則a的命名邏輯可能會出現問題
$path='E:\test\';

$path=getFile($path,'a');

$path=getFile($path,'b');

getFile($path,'c',true);
//理論上能實現無限遞歸,只要在最後一級把參數mkdir改為true就行
}

J. php新手,關於分類目錄,求思路

表結構:
表名 menu
欄位:
m_id
m_name
m_fatherid
.
.
.(其它欄位根據你實際需要)

數據:
m_id m_name m_fatherid
1 我的訂單 0
2 我的賬號 0
3 待付款訂單 1
4 已付款訂單 1
5 過期訂單 1
6 賬號信息 2
7 修改密碼 2
8................................不寫了。你自己完成吧。。。

讀取菜單:

<?php
$conn = mysql_connect('localhost','xxxx','xxxxx');
mysql_select_db('xxxx',$conn);
mysql_query("SET NAMES UTF8");

function get_menu ($f_id=0,$conn) {
$menu_arr = array();

$sql = "SELECT * FROM `menu` WHERE `m_fatherid`=".intval($f_id);

$result = mysql_query($sql,$conn);

if (!$result){
return false;
}

$row = "";
$i = 1;
while($row=mysql_fetch_array($result,MYSQL_ASSOC)){
$menu_arr[$i] = $row;
$menu_arr[$i] ['sub'] = get_menu($row['m_id'],$conn);
$i++;
}

return $menu_arr;
}

$menus = get_menu(0,$conn);
echo "<pre>";
print_r($menus);
echo "</pre>";
?>

結果你自己格式化再輸出吧。能用的,我試過了 輸出的數組大概為:
Array
(
[1] => Array
(
[m_id] => 1
[m_name] => 訂單管理
[m_fatherid] => 0
[sub] => Array
(
[1] => Array
(
[m_id] => 3
[m_name] => 已完成定單
[m_fatherid] => 1
[sub] => Array
(
)
)
[2] => Array
(
[m_id] => 4
[m_name] => 待完成定單
[m_fatherid] => 1
[sub] => Array
(
)
)
)
)
[2] => Array
(
[m_id] => 2
[m_name] => 賬號管理
[m_fatherid] => 0
[sub] => Array
(
[1] => Array
(
[m_id] => 5
[m_name] => 信息修改
[m_fatherid] => 2
[sub] => Array
(
)
)
[2] => Array
(
[m_id] => 6
[m_name] => 修改密碼
[m_fatherid] => 2
[sub] => Array
(
)
)
)
)
)

熱點內容
網投源碼 發布:2024-05-06 17:10:35 瀏覽:870
看門狗腳本 發布:2024-05-06 17:10:28 瀏覽:107
如何查看伺服器型號主板型號 發布:2024-05-06 16:52:25 瀏覽:601
無冬之夜腳本 發布:2024-05-06 16:46:04 瀏覽:634
雙引號在c語言 發布:2024-05-06 16:45:52 瀏覽:966
資料庫字體 發布:2024-05-06 16:33:53 瀏覽:697
c語言鏈表建立 發布:2024-05-06 16:17:33 瀏覽:221
python3xlwt3 發布:2024-05-06 16:09:59 瀏覽:373
c語言的意思啊 發布:2024-05-06 15:54:19 瀏覽:70
如何重置手機密碼realme 發布:2024-05-06 14:57:25 瀏覽:348