العمل مع الملفات في PHP

العمل مع الملفات في PHP

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

درس العمل مع الملفات في PHP طويل مشاق ميتطلب تركيز ووقت لكن حرصنا على تبسيطه باختيار أمثلة سلسة وسهلة

العمل مع الملفات في PHP

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

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

فتح ملف مع دالة (fopen)

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

fopen(filenamemode)
تحدد المعلمة الأولى التي تم تمريرها إلى (fopen) اسم الملف الذي تريد فتحه ، بينما تحدد المعلمة الثانية الوضع الذي يجب فتح الملف فيه. فمثلا:
حرف الـ r هنا يوضح الوضع الذي سيفتح به الملف ، وقد يتم فتح الملف في أحد الأوضاع التالية الموضحة في الجدول التالي:
الأسلوبالاستخدامات
rافتح الملف للقراءة فقط.
r+ افتح الملف للقراءة والكتابة.
w افتح الملف للكتابة فقط وامسح محتويات الملف. إذا كان الملف غير موجود ، فستحاول PHP إنشائه.
w+ افتح الملف للقراءة والكتابة وامسح محتويات الملف. إذا كان الملف غير موجود ، فستحاول PHP إنشائه.
a إلحاق نص. يفتح الملف للكتابة فقط. يحافظ على محتوى الملف بالكتابة في نهاية النص الموجود. إذا كان الملف غير متوفر، فستحاول PHP إنشائه.
a+ قراءة / إلحاق. يفتح الملف للقراءة والكتابة. يحافظ على محتوى الملف بالكتابة في نهاية الملف. إذا كان الملف غير موجود ، فستحاول PHP إنشائه.
x افتح الملف للكتابة فقط. إرجاع FALSE ويقوم بإنشاء خطأ إذا كان الملف موجودًا بالفعل. إذا كان الملف غير موجود ، فستحاول PHP إنشائه.
x+ افتح الملف للقراءة والكتابة. خلاف ذلك لديه نفس السلوك مثل "x".

إذا حاولت فتح ملف غير موجود ، فسوف يقوم PHP بإنشاء رسالة تحذير.

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

نصيحة: العمل مع الملفات في PHP عرضة للأخطاء.

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

انظر الدرس القادم في هذه السلسلة بعنوان معالجة الأخطاء في PHP.


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

بمجرد الانتهاء من العمل مع ملف ، يجب إغلاقه.

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

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


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

الآن بعد أن فهمت كيفية فتح وإغلاق الملفات.

في القسم التالي سوف تتعلم كيفية قراءة البيانات من ملف.

يحتوي PHP على العديد من الوظائف لقراءة البيانات من ملف.

يمكنك القراءة ابتداءاً من حرف واحد فقط إلى الملف بأكمله من خلال عملية واحدة.

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

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

تكتب الصيغة الأساسية لهذه الوظيفة كما يلي.

fread(file handlelength in bytes)

تأخذ هذه الدالة معلمتين – مؤشر ملف وعدد البايتات للقراءة.

المثال التالي يقرأ 20 بايت من ملف “data.txt” بما في ذلك المسافات.

لنفترض أن الملف “data.txt” يحتوي على النص التالي “إذا أردنا أن نعرف ماذا في إيطاليا يجب أن نعرف ماذا في البرازيل”.

المثال أعلاه سوف يعطي النتيجة التالية:

“إذا أردنا أن نعرف ما”

عشرين محرف فقط


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

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

ترجع الدالة (filesize) حجم الملف بالبايت.

المثال أعلاه سوف يعطي النتيجة التالية:

“إذا أردنا أن نعرف ماذا في إيطاليا يجب أن نعرف ماذا في البرازيل”

وأسهل طريقة لقراءة محتويات الملف بالكامل في PHP هي وظيفة (readfile).

تتيح لك هذه الوظيفة قراءة محتويات الملف دون الحاجة إلى فتحه. سيولد المثال التالي نفس الإخراج على النحو المثال أعلاه:

المثال أعلاه سوف يعطي النتيجة التالية:

“إذا أردنا أن نعرف ماذا في إيطاليا يجب أن نعرف ماذا في البرازيل”

هناك طريقة أخرى لقراءة محتويات الملف بالكامل دون الحاجة إلى فتحها مع وظيفة file_get_contents ().

تقبل هذه الدالة الاسم والمسار إلى الملف ، وتقرأ الملف بأكمله وتخزنه في متغير بصيغة سلسلة نصية.

إليك مثال على ذلك:

هناك طريقة أخرى لقراءة البيانات الكاملة من الملف هي دالة (file) في PHP .

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

كل عنصر من المصفوفة الراجع يتوافق مع سطر في الملف النصي.

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

إليك مثال ، يقرأ ملفًا إلى مصفوفة ثم يعرضه باستخدام الحلقة:


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

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

تكتب البنية الأساسية لهذه الوظيفة بالشكل التالي :

fwrite(file handlestring)
تأخذ الدالة (fwrite) معلمتين – مقبض ملف وسلسلة البيانات المراد كتابتها ، كما هو موضح في المثال التالي:

في المثال أعلاه ، إذا لم يكن ملف “note.txt” موجودًا ، فستقوم PHP تلقائيًا بإنشائه وكتابة البيانات.

ولكن ، إذا كان الملف “note.txt” موجودًا بالفعل ، فسيقوم PHP بمسح محتويات هذا الملف ،قبل كتابة البيانات الجديدة ،

ومع ذلك ، إذا أردت فقط إلحاق الملف والحفاظ على المحتويات الموجودة ، فاستخدم a بدلاً من w في المثال أعلاه في السطر رقم 8.

طريقة بديلة هي استخدام الدالة  (file_put_contents).

وهو نظير الدالة (file_get_contents) ويوفر طريقة سهلة لكتابة البيانات إلى ملف دون الحاجة إلى فتحه.

تقبل هذه الدالة الاسم والمسار إلى الملف مع البيانات المراد كتابتها إلى الملف.

إليك مثال على ذلك:

إذا كان الملف المحدد في الدالة (file_put_contents) موجودًا بالفعل ، فستقوم PHP بالكتابة فوقه بشكل افتراضي.

إذا كنت ترغب في الاحتفاظ بمحتويات الملف ، يمكنك تمرير علم FILE_APPEND الخاصة كمعلمة ثالثة إلى الدالة (file_put_contents).

سيضيف ببساطة البيانات الجديدة إلى الملف بدلاً من استبدالها.

إليك مثال على ذلك:


إعادة تسمية الملفات مع PHP باستخدام الدالة rename

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


إزالة الملفات في PHP باستخدام دالة إلغاء ارتباط (unlink)

يمكنك حذف الملفات أو الأدلة باستخدام دالة إلغاء ارتباط (unlink)

مثال:

مازال أمامك المزيد عن تحليل الأدلة أو المجلدات في PHP. سوف نتعلمها في فصل لاحق من هذه السلسلة التعليمية


دوال نظام ملفات في PHP

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

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

كذلك ننصح بمراجعة دوال الملفات في المرجع الرئيسي للغة البرمجة بي اتش بي على الموقع الرسمي php.net

نهاية الدرس : العمل مع الملفات في PHP

دروس تعليم PHP حدبثة من الأساسيات إلى الاحتراف

قم بكتابة اول تعليق

اترك رد