English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

دليل PHP الأساسي

دليل PHP متقدم

PHP & MySQL

دليل PHP

ملفات PHP

في هذا الدليل، ستتعلم كيفية إنشاء، الوصول (أو قراءة) وتعديل الملفات ديناميكياً باستخدام دوال نظام الملف في PHP.

معالجة الملفات باستخدام PHP

بما أن PHP لغة برمجة على الجانب الخادم، فإنه يسمح لك باستخدام الملفات والمجلدات المخزنة على خادم الويب. في هذا الدليل، ستتعلم كيفية استخدام دوال نظام الملف في PHP لإنشاء، الوصول، وتعديل الملفات على خادم الويب.

فتح الملف باستخدام دالة PHP fopen()

لاستخدام الملف، يجب أولاً فتح الملف. يعمل دالة fopen() في PHP على فتح الملف. يمكن تقديم النحو الأساسي للدالة كما يلي:

fopen(filename, mode)

يحدد أول معامل fopen() اسم الملف الذي سيتم فتحه، والثاني يحدد كيفية فتح الملف. على سبيل المثال:

<?php
$handle = fopen("data.txt", "r");
?>
اختبار ل‹/›

يمكن فتح الملف من خلال إحدى الطرق التالية:

نمطما الذي يمكن أن يفعله
rفتح الملف فقط للقراءة
r+فتح الملف للقراءة والكتابة
wفتح الملف فقط للكتابة وأزالة محتويات الملف. إذا لم يكن الملف موجودًا، يحاول PHP إنشائه.
w+فتح الملف للقراءة والكتابة وأزالة محتويات الملف. إذا لم يكن الملف موجودًا، يحاول PHP إنشائه.
aالإضافة. فتح الملف فقط للكتابة. عبر الكتابة في نهاية الملف، يتم الحفاظ على محتويات الملف. إذا لم يكن الملف موجودًا، يحاول PHP إنشائه.
a+القراءة والإضافة. فتح الملف للقراءة والكتابة. عبر الكتابة في نهاية الملف، يتم الحفاظ على محتويات الملف. إذا لم يكن الملف موجودًا، يحاول PHP إنشائه.
xفتح الملف فقط للكتابة. إذا كان الملف موجودًا، فإن PHP يعود بـ False ويقوم بإنشاء خطأ. إذا لم يكن الملف موجودًا، يحاول PHP إنشائه.
x+فتح الملف للقراءة والكتابة؛ وإلا فإن سلوكه مشابه لـ "x".

إذا حاولت فتح ملف غير موجود، سيقوم PHP بإنشاء رسالة تحذير. لذلك، لتجنب هذه الرسائل التحذيرية، يجب القيام بفحص بسيط باستخدام دالة PHP file_exists() قبل محاولة الوصول إلى ملف أو مجلد.

<?php
$file = "data.txt";
 
//تحقق مما إذا كان الملف موجودًا
if(file_exists($file)){
    // محاولة فتح الملف
    $handle = fopen($file, "r");
}
    echo "ERROR: File does not exist.";
}
?>
اختبار ل‹/›

نصيحة:تتميز عمليات ملفات المجلدات بالتعرض للأخطاء. لذلك، من الجيد تنفيذ شكل من أشكال التحقق من الأخطاء، بحيث يمكن للسكريبت التعامل مع الأخطاء بشكل جيد في حالة حدوثها. يرجى الرجوع إلىمعالجة الأخطاء في PHPدليل.

استخدام دالة PHP fclose() لإغلاق الملف

بعد استخدام الملف، يجب إغلاقه. تستخدم دالة fclose() إغلاق الملف، كما هو موضح في المثال التالي:

<?php
$file = "data.txt";
 
//تحقق مما إذا كان الملف موجودًا
if(file_exists($file)){
    // فتح الملف الذي سيتم قراءته
    $handle = fopen($file, "r") or die("ERROR: Cannot open the file.");
        
    /* هنا بعض الكود الذي سيتم تنفيذه */
        
    // إغلاق ملف الـ handle
    fclose($handle);
}
    echo "ERROR: File does not exist.";
}
?>
اختبار ل‹/›

ملاحظة:على الرغم من أن PHP يغلق جميع الملفات المفتوحة تلقائيًا عند انتهاء سكريبت، إلا أنه من الأفضل إغلاق الملفات بعد إكمال جميع العمليات.

استخدام دالة PHP fread() لقراءة الملف

الآن بعد أن تعرفت كيفية فتح وإغلاق الملفات. في الفصل التالي، ستتعلم كيفية قراءة البيانات من الملف. يحتوي PHP على عدة دوال لقراءة البيانات من الملفات. يمكنك قراءة الملف برمجته واحدة تلو الأخرى.

قراءة عدد محدد من الحروف

يمكن استخدام دالة fread() لقراءة عدد معين من الحروف من الملف. يمكنك استخدام بناء الجملة الأساسي للدالة.

fread(file handle, length in bytes)

هذه الوظيفة تأخذ اثنين من المعلمات- ملف المعالجة والعدد المطلوب من البايتات للقراءة. في المثال التالي، يتم قراءة 20 بايت من ملف "data.txt" بما في ذلك الفراغات. افترض أن ملف "data.txt" يحتوي على نص "The quick brown fox jumps over the lazy dog.".

<?php
$file = "data.txt";
 
//تحقق مما إذا كان الملف موجودًا
if(file_exists($file)){
    // فتح الملف الذي سيتم قراءته
    $handle = fopen($file, "r") or die("ERROR: Cannot open the file.");
        
    // قراءة عدد معين من البites من الملف
    $content = fread($handle, "20");
        
    // إغلاق ملف الـ handle
    fclose($handle);
        
    // عرض محتويات الملف
    echo $content;
}
    echo "ERROR: File does not exist.";
}
?>
اختبار ل‹/›

النموذج المذكور أعلاه سيولد النتيجة التالية:

The quick brown fox

قراءة محتويات الملف بأكمله

يمكن استخدام دالة fread() مع دالة filesize() لقراءة الملف بأكمله مرة واحدة. وظيفة دالة filesize() هي: عودة حجم الملف بالبites.

<?php
$file = "data.txt";
 
//تحقق مما إذا كان الملف موجودًا
if(file_exists($file)){
    // فتح الملف الذي سيتم قراءته
    $handle = fopen($file, "r") or die("ERROR: Cannot open the file.");
        
    // قراءة الملف بأكمله
    $content = fread($handle, filesize($file));
        
    // إغلاق ملف الـ handle
    fclose($handle);
        
    // عرض محتويات الملف
    echo $content;
}
    echo "ERROR: File does not exist.";
}
?>
اختبار ل‹/›

النموذج المذكور أعلاه سيولد النتيجة التالية:

The quick brown fox jumps over the lazy dog.

أكثر طريقة بسيطة لقراءة جميع محتويات الملف في PHP هي استخدام دالة readfile(). هذه الدالة تسمح لك بقراءة محتويات الملف دون الحاجة إلى فتحه. النموذج التالي سيولد نفس النتيجة المذكورة أعلاه:

<?php
$file = "data.txt";
 
//تحقق مما إذا كان الملف موجودًا
if(file_exists($file)){
    // قراءة وإخراج الملف بأكمله
    readfile($file) or die("ERROR: Cannot open the file.");
}
    echo "ERROR: File does not exist.";
}
?>
اختبار ل‹/›

النموذج المذكور أعلاه سيولد النتيجة التالية:

The quick brown fox jumps over the lazy dog.

طريقة أخرى لقراءة جميع محتويات الملف دون فتحه هي استخدام دالة file_get_contents(). هذه الدالة تأخذ اسم الملف والطريق، وتقوم بقراءة الملف بأكمله إلى متغير نصي. إليك مثال:

<?php
$file = "data.txt";
 
//تحقق مما إذا كان الملف موجودًا
if(file_exists($file)){
    // قراءة الملف بأكمله كـ string
    $content = file_get_contents($file) or die("ERROR: Cannot open the file.");
        
    // عرض محتويات الملف
    echo $content;
}
    echo "ERROR: File does not exist.";
}
?>
اختبار ل‹/›

طريقة أخرى لقراءة جميع بيانات الملف باستخدام دالة PHP file(). وظيفتها مشابهة لدالة file_get_content()، ولكنها تعود بمجموعة من السطور بدلاً من العودة بمجموعة من النصوص كـ string. كل عنصر في المجموعة يعكس سطرًا في الملف.

لمعالجة بيانات الملف، تحتاج إلى استخدامدورة foreachاستعراض اللوحة. هذا مثال يقرأ الملف إلى اللوحة ثم يعرضه باستخدام دورة:

<?php
$file = "data.txt";
 
//تحقق مما إذا كان الملف موجودًا
if(file_exists($file)){
    //قراءة الملف كله إلى array
    $arr = file($file) or die("ERROR: Cannot open the file.");
    foreach($arr as $line){
        echo $line;
    }
}
    echo "ERROR: File does not exist.";
}
?>
اختبار ل‹/›

كتسجيل الملف باستخدام function fwrite() في PHP

بالمثل، يمكنك استخدام function fwrite() في PHP لكتسجيل البيانات في الملف أو إضافة البيانات إلى الملف الحالي. يمكن تقديم الجملة الأساسية لهذه function بالطريقة التالية:

fwrite(file handle, string)

fwrite() function تأخذ اثنين من المعلماتـ ملف الملف والبيانات التي تريد كتابتها كـ string، كما هو موضح في المثال التالي:

<?php
$file = "note.txt";
    
//السطر الذي سيتم كتابته
$data = "The quick brown fox jumps over the lazy dog.";
    
//فتح الملف للكتابة
$handle = fopen($file, "w") or die("ERROR: Cannot open the file.");
    
//كتابة البيانات في الملف
fwrite($handle, $data) or die ("ERROR: Cannot write the file.");
    
//إغلاق ملف الملف
fclose($handle);
    
echo "تم كتابة البيانات بنجاح في الملف.";
?>

في المثال السابق، إذا لم يكن ملف "note.txt" موجودًا، فإن PHP سيقوم بإنشاء الملف تلقائيًا وكتسجيل البيانات. ولكن إذا كان ملف "note.txt" موجودًا بالفعل، فإن PHP سيقوم بإزالة محتويات الملف (إذا كانت موجودة) قبل تسجيل البيانات الجديدة، ولكن إذا كنت ترغب في إضافة البيانات فقط وتحافظ على المحتويات الحالية، فاستخدم المثال السابقنمط a بدلاً من w.

طريقة أخرى هي استخدام function file_put_contents(). إنها تطابق function file_get_contents()، وتقدم طريقة سهلة لتسجيل البيانات في الملف دون فتحه. تأخذ هذه function اسم الملف والمسار وبيانات التسجيل التي تريد كتابتها في الملف. إليك مثال:

<?php
$file = "note.txt";
    
//السطر الذي سيتم كتابته
$data = "The quick brown fox jumps over the lazy dog.";
    
//كتابة البيانات في الملف
file_put_contents($file, $data) or die("ERROR: Cannot write the file.");
    
echo "تم كتابة البيانات بنجاح في الملف.";
?>

إذا كان ملف file_put_contents() المحدد موجودًا بالفعل، فإن PHP سيقوم بالتغطية عليه افتراضيًا. إذا كنت ترغب في الحفاظ على محتويات الملف، يمكنك تقديم علامة FILE_APPEND الخاصة كثالثة 参数 لـ file_put_contents(). سيزيد ببساطة البيانات الجديدة إلى الملف دون تغطية. إليك مثال:

<?php
$file = "note.txt";
    
//السطر الذي سيتم كتابته
$data = "The quick brown fox jumps over the lazy dog.";
    
//كتابة البيانات في الملف
file_put_contents($file, $data, FILE_APPEND) or die("ERROR: Cannot write the file.");
    
echo "تم كتابة البيانات بنجاح في الملف.";
?>

استخدام وظيفة PHP rename() لإعادة تسمية الملف

يمكنك استخدام وظيفة PHP rename() لإعادة تسمية الملف أو الدليل، كما يلي:

<?php
$file = "file.txt";
 
//تحقق مما إذا كان الملف موجودًا
if(file_exists($file)){
    //تحاول إعادة تسمية الملف
    if(rename($file, "newfile.txt")){
        echo "تم إعادة تسمية الملف بنجاح.";
    }
        echo "خطأ: لا يمكن إعادة تسمية الملف.";
    }
}
    echo "خطأ: الملف غير موجود.";
}
?>

استخدام وظيفة PHP unlink() لحذف الملف

يمكنك استخدام وظيفة PHP unlink() لحذف الملف أو الدليل، كما يلي:

<?php
$file = "note.txt";
 
//تحقق مما إذا كان الملف موجودًا
if(file_exists($file)){
    //تحاول حذف الملف
    if(unlink($file)){
        echo "تم حذف الملف بنجاح.";
    }
        echo "خطأ: لا يمكن حذف الملف.";
    }
}
    echo "خطأ: الملف غير موجود.";
}
?>

في الفصل التالي، سنتعلم عنتحليل مجلد أو دليلالمزيد من المعلومات.

وظائف PHP ملف النظام

يقدم الجدول أدناه بعض وظائف PHP ملف النظام المفيدة الأخرى، التي يمكن استخدامها لقراءة وكتابة الملفات ديناميكيًا.

وظيفة
وصف
fgetc()قراءة حرف واحد في كل مرة.
fgets()قراءة سطر واحد في كل مرة.
fgetcsv()قراءة سطر يحتوي على قيم مفصولة بالكومي.
filetype()يعود بناءً على نوع الملف.
feof()تحقق مما إذا وصلنا إلى نهاية الملف.
is_file()تحقق مما إذا كان الملف ملفًا عاديًا.
is_dir()تحقق مما إذا كان الملف مجلدًا.
is_executable()تحقق مما إذا كان الملف قابلاً للتنفيذ.
realpath()يعود بناءً على مسار مسمى الملف المطلق الموحّد.
rmdir()حذف مجلد فارغ.

يرجى الرجوع إلى دليل PHP ملف النظام للحصول على وظائف PHP ملف النظام المفيدة الأخرى.