انجمن های تخصصی علوم رایانه و هنرهای دیجیتال
  • صفحه اصلی
  • جستجو
  • لیست اعضا
  • تقویم
  • راهنما




سی جی آریا

رسانه تخصصی آموزش هنرهای دیجیتال



ورود به انجمن ثبت نام کنید
ورود
نام کاربری:
گذرواژه‌: گذرواژه‌تان را فراموش کرده‌اید؟
 

Home انجمن های تخصصی علوم رایانه و هنرهای دیجیتال رایانه برنامه نویسی | طراحی وب برنامه نویسی پی اچ پی | PHP مرجع توابع PHP

امتیاز موضوع:
  • 1 رأی - میانگین امتیازات: 5
  • 1
  • 2
  • 3
  • 4
  • 5
حالت خطی
مرجع توابع PHP
Mohsen Omidvar آفلاین
مدیر ارشد
*******
ارسال‌ها: 1,259

موضوع‌ها: 634
تاریخ عضویت: Apr 2012
اعتبار: 198
سپاس ها 400
سپاس شده 2999 بار در 869 ارسال
#3
01-01-2014، 01:38 PM (آخرین ویرایش: 24-01-2014، 06:05 PM، توسط Mohsen Omidvar.)
در قسمت قبل با نحوه خواندن و نوشتن محتویات فایلهای متنی در PHP آشنا شدید.در این این قسمت به مدیریت فایلها و پوشه ها میپردازیم.
مباحثی که در این بخش خواهیم آموخت :
لیست کردن فایلها و پوشه ها
ایجاد پوشه جدید
کپی کردن فایلها و پوشه ها
حذف فایلها
چک کردن وجود یک فایل یا پوشه
برای دسترسی به محتویات یک پوشه چندتا راه وجود داره.در زیر با این راه ها آشنا میشید.
تابع Opendir

این تابع آدرس یک پوشه رو دریافت میکنه و یک اشاره گر رو برگشت میده که از این اشاره گر میتونیم در تابع readdir استفاده کنیم :
کد php:
<?php 
    $location 
= './'; 
    
$dp = opendir($location); 
    while (
$entry = readdir($dp)) 
    {
        if (
is_dir($location . $entry))
        {
            echo 
'[Dir] ' . $entry . '<br />';
        }
        else if (
is_file($location . $entry))
        {
            echo 
'[File] ' . $entry . '<br />';
        } 
    } 
    
closedir($dp); 
?>
در کد بالا ابتدا با استفاده از تابع opendir یک پوشه رو باز کردیم سپس در حلقه while و با استفاده ازتابع readdir محتویات پوشه رو یکی یکی در متغیر $entry ذخیره کردیم.
برای تشخیص اینکه آیا اشاره گر روی یک فایل قرار داره یا یک پوشه از توابع is_file و is_dir استفاده میکنیم.

تابع Dir

خروجی این تابع یک شیء از کلاس Directory میباشد و با استفاده از متدهای این کلاس میتونیم محتویات پوشه رو پیمایش کنیم
کد php:
$location = './'; 
    
$dir = dir($location); 
    while (
$entry = $dir->read()) 
    {
        if (
is_dir($location . $entry))
        {
            echo 
'[Dir] ' . $entry . '<br />';
        }
        else if (
is_file($location . $entry))
        {
            echo 
'[File] ' . $entry . '<br />';
        } 
    } 
کد بالا هم مثل مثال قبل نام فایلها و پوشه هارو چاپ میکنه.

تابع Glob

تابع glob() برای پیدا کردن فایلها با استفاده از یک الگوی خاص میتونه به شما کمک کنه :
کد php:
view sourceprint?
// get all php files
$files = glob('*.php');
print_r($files);
/* output looks like:
Array
(
[0] => phptest.php
[1] => pi.php
[2] => post_output.php
[3] => test.php
)
*/ 
شما میتونید چند نوع فایل مختلف رو جستجو کنید
کد php:
$files = glob('*.{php,txt}', GLOB_BRACE);
print_r($files);
/* output looks like:
Array
(
[0] => phptest.php
[1] => pi.php
[2] => post_output.php
[3] => test.php
[4] => log.txt
[5] => test.txt
)
*/ 
و یا یه مسیر بهش بدید :

کد php:
$files = glob('../images/a*.jpg');

print_r($files);
/* output looks like:
Array
(
[0] => ../images/apple.jpg
[1] => ../images/art.jpg
)
*/ 
برای گرفتن مسیر واقعی فایلها هم میتونید ازrealpath() تابع استفاده کنید :
کد php:
$files = glob('../images/a*.jpg');
// applies the function to each array element
$files = array_map('realpath',$files);
print_r($files);
/* output looks like:
Array
(
[0] => C:wampwwwimagesapple.jpg
[1] => C:wampwwwimagesart.jpg
)
*/ 
کپی کردن فایلها

برای کپی کردن فایلها از یک مکان به مکان دیگه از تابع copy استفاده میکنیم :

کد php:
<?php
$file 
= 'example.txt';
$newfile = 'example.txt.bak';
if (!
copy($file, $newfile)) {
    echo 
"failed to copy $file...\n";
}
?>
این تابع دو پارامتر ورودی میگیره.اولی مسیر و نام فایل مبدا و دومی مسیر فایل مقصد.دقت کنید که اگر فایل مقصد وجود داشته باشه فایل overwrite میشه.
اگر هم خطایی در هنگام کپی خطایی رخ بده این تابع مقدار false برمیگردونه.
حذف فایل
برای حذف فایل هم میتونید از تابع unlink استفاده کنید :

کد php:
unlink('test.html'); 

برای چک کردن وجود یک فایل از تابع file_exists استفاده میشه.
کد php:
if(file_exists('test.jpg')) {
 
// ...
} 
در ادامه یه کلاس ساده ساختم برای لیست کردن محتویات یک پوشه.

کد php:
<?php
class FileManager
{
    private 
$path;
    function 
__construct($path = '')
    {
        
$this->path = $path;
    }
    function 
getDirectories()
    {
            
$dirContent = array();
        
$dir = opendir($this->path);
        while(
$contnets = readdir($dir))
        {
            if(
is_dir($this->path . $contnets) AND $contnets!='.' AND $contnets != '..')
            {
                
$dirContent['dir'][] = $contnets;           
            }elseif (
is_file($this->path . $contnets))
            {
                
$dirContent['file'][] = $contnets;
            }
        }
        return 
$dirContent;
    }
    function 
render()
    {
                
$dirContent = $this->getDirectories();
                echo 
'<h1>'.$this->path.'</h1>';
                echo 
'<a href="?dir=./">Root Directory.</a><br>';
                
$parent = explode('/',$this->path);
                
array_pop($parent);
                
array_pop($parent);
                
$parent = implode('/',$parent);              
                echo 
'<a href="?dir='.$parent.'/">Parent Directory.</a><br>';
                echo 
'Root ..
                <br>          
                <ul>    
                '
;
                foreach(
$dirContent as $key=>$value)
                {
                    if(
$key=='dir')
                    {
                       foreach(
$value as $v)
                       {
                           echo 
'<li><a href="?dir='.$this->path.$v.'/">'.$v.'</a></li><br>';
                       }
                    }
                    else
                    {
                        echo 
'<ul>';
                       foreach(
$value as $v)
                       {
                           echo 
'<li><a href="'.$this->path . $v.'">'.$v.'</a></li><br>';
                       } 
                       echo 
'</ul>';
                    }
                }
                echo 
'<ul>';
    }
} 
برای استفاده از کلاس بالا به صورت زیر عمل میکنیم :
کد php:
view sourceprint?
<?
php
include 'FileManager.php';
$path = '/files/';
if(isset(
$_GET['dir']))
{
    
$path = $_GET['dir'];
    
$fileManager = new FileManager($_GET['dir']);
}else
    
$fileManager = new FileManager('./files/'); 
$fileManager->render();
?>
با استفاده از این کلاس میتونید لیست محتویات هر پوشه رو با کلیک روی پوشه مشاهده کنید.
 *شما قادر به دیدن لینک ها نیستید ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید*
خورشید باش که اگر خواستی بر کسی نتابی نتوانی.
ارسال‌ها
پاسخ
« قدیمی‌تر | جدیدتر »


پیام‌های داخل این موضوع
مرجع توابع PHP - توسط Mohsen Omidvar - 01-01-2014، 01:04 PM
مدیریت فایلها در PHP قسمت اول : خواندن و نوشتن - توسط Mohsen Omidvar - 01-01-2014، 01:18 PM
مدیریت فایلها در PHP قسمت دوم : مدیریت فایلها و پوشه ها - توسط Mohsen Omidvar - 01-01-2014، 01:38 PM
مدیریت فایلها در PHP قسمت سوم : پروتکل FTP - توسط Mohsen Omidvar - 01-01-2014، 02:13 PM
توابع کار با آرایه ها در PHP - توسط Mohsen Omidvar - 01-01-2014، 03:03 PM
توابع سودمند درپی اچ پی PHP - توسط Mohsen Omidvar - 01-01-2014، 04:02 PM

  • مشاهده‌ی نسخه‌ی قابل چاپ
پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان
مکان تبلیغ شما
تمامی حقوق این سایت مربوط به انجمن های تخصصی علوم رایانه و هنرهای دیجیتال میباشد