English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
في هذا الدليل، ستتعلم كيفية استخدام PHP لمعالجة مجلدات أو مجلدات.
في الفصل السابق تعلمت كيفية استخدام الملفات في PHP. بنفس الطريقة، يسمح لك PHP أيضًا باستخدام مجلدات على نظام الملفات، مثل، يمكنك فتح مجلد وقراءة محتوياته، إنشاء أو حذف مجلد، قائمة بجميع الملفات في المجلد، وما إلى ذلك.
يمكنك إنشاء دليل جديد باستخدام دالة PHP mkdir() باستخدام مسار واسم الدليل الذي تريد إنشائه، مثل مثال التالي:
<?php //مسار الدليل $dir = "testdir"; //تحقق من وجود المجلد إذا (!file_exists($dir)){ //حاول إنشاء المجلد إذا (mkdir($dir)){ echo "نجح في إنشاء المجلد."; } else { echo "خطأ: لا يمكن إنشاء المجلد."; } } else { echo "خطأ: المجلد موجود بالفعل."; } ؟>
للعمل على دالة mkdir()، يجب أن يكون المجلد الذي يحتوي على المسار المحدد موجوداً في المعاملات، مثل، إذا كنت قد أدرجت مسار الدليل المحدد testdir/subdir مقارنة testdir بطرق أخرى، سيكون هناك خطأ في PHP.
يمكنك نسخ الملف من موقع إلى آخر باستخدام دالة PHP copy() بتحديد مسار الملف المصدر والمسار الوجهة كمعاملات. إذا كان الملف الوجهة موجوداً، سيتم تغطيته. هذا مثال على إنشاء نسخة احتياطية من ملف "example.txt" في مجلد النسخ الاحتياطي.
<?php //مسار الملف المصدر $file = "example.txt"; //مسار الملف الوجهة $newfile = "backup/example.txt"; // تحقق من وجود الملف إذا (file_exists($file)){ //حاول نسخ الملف إذا (copy($file, $newfile)){ echo "نجح في نسخ الملف."; } else { echo "خطأ: لا يمكن نسخ الملف."; } } else { echo "خطأ: الملف غير موجود."; } ؟>
لجعل هذا المثال يعمل، يجب أن يكون هناك بالفعلنسخة احتياطيةمجلد الوجهة والملف المصدر "example.txt" يجب أن يكون موجوداً. وإلا فإن PHP سيكون هناك خطأ.
يمكنك استخدام دالة PHP scandir() لقائمة الملفات والدلائل الموجودة في المسار المحدد.
الآن، سنقوم بإنشاء دالة مخصصة ستستخدم PHP للتنقل مكرراً لقائمة جميع الملفات في الدليل. إذا كنت تستخدم بنية دليل متشابكة عميقة، فإن هذا السكربت سيكون مفيداً جداً.
<?php //定义一个函数以输出目录中的文件 function outputFiles($path){ //تحقق من وجود الدليل if(file_exists($path) && is_dir($path)){ //扫描此目录中的文件 $result = scandir($path); // 过滤掉当前的(.)和父目录(..) $files = array_diff($result, array('.', '..')); if(count($files) > 0){ //循环遍历重新调谐的数组 foreach($files as $file){ إذا (is_file("$path/$file")){ //显示文件名 echo $file . "<br>"; } else if(is_dir("$path/$file")){ //إذا تم العثور على الدليل، يتم استدعاء الدالة بشكل متكرر outputFiles("$path/$file"); } } } else { echo "خطأ: لا يمكن العثور على الملف في الدليل."; } } else { echo "خطأ: لا يوجد هذا الدليل."; } } //دعوة الدالة outputFiles("mydir"); ؟>
عند التعامل مع بنية الدليل والملفات، قد تحتاج إلى البحث عن أنواع معينة من الملفات في الدليل، مثل قائمة ملفات .text أو .png وغيرها. يمكنك القيام بذلك بسهولة باستخدام دالة PHP glob() التي تستخدم مطابقة النمط لملفات.
في مثال PHP التالي، سيتم البحث عن documents دليل وعرض جميع الملفات التي تحتوي على امتداد .text. لن يتم البحث في الدلائل الفرعية.
<?php /* البحث في الدليل والتحقق من الملفات المتناسبة، وتقديم مجموعة تحتوي على ملفات التطابق */ foreach(glob("documents/*.txt") as $file){ echo basename($file) . "(حجم: " . filesize($file) . "بايت)" . "<br>"; } ؟>
glob() دالة يمكن استخدامها للبحث عن جميع الملفات داخل الدليل أو أسره. في المثال التالي، يتم تعريف دالة ستجلب جميع ملفات الدليل بشكل متكرر، كما فعلنا في المثال السابق باستخدام دالة scandir()
<?php //تحديد الدالة لعرض ملفات الدليل function outputFiles($path){ //تحقق من وجود الدليل if(file_exists($path) && is_dir($path)){ //البحث في الملفات داخل الدليل $files = glob($path."/*"); if(count($files) > 0){ //تدوير التجميع مرة أخرى foreach($files as $file){ if(is_file("$file")){ //يظهر فقط اسم الملف echo basename($file) . "<br>"; } else if(is_dir("$file")){ //إذا تم العثور على الدليل، يتم استدعاء الدالة بشكل متكرر outputFiles("$file"); } } } else { echo "خطأ: لا يمكن العثور على هذا النوع من الملف في الدليل."; } } else { echo "خطأ: لا يوجد هذا الدليل."; } } //دعوة الدالة outputFiles("mydir"); ؟>