أساسيات البرمجة برمجة المواقع بي اتش بي التعامل مع الملفات PHP Files I/O

 التعامل مع الملفات PHP Files  I/O

أساسيات البرمجة  برمجة المواقع بي اتش بي التعامل مع الملفات PHP Files  I/O

 ماهي دوال التي تتعامل مع الملفات PHP Files  I/O

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


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

سيتم  التعامل مع الدوال التالية وسيتم دراسة خصائص هذه الدوال.

  • دوال فتح الملفات Opening a file
  • دوال القراءة من الملفات Reading a file
  • دوال الكتابة للملفات Writing a file
  • دوال إغلاق الملفات  Closing a file

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

جدول ال Mode لدالة فتح الملفات ()fopen

الوضعالوصف
rفتح الملف في وضعية القراءة فقط يبدأ القراءة من بداية الملف
r+فتح الملف في وضعية القراءة والكتابة يبدأ القراءة أو المكتابة من بداية الملف
wفتح الملف في وضعية الكتابة فقط ويقوم بمسح المحتويات والكتابة وفي حال كان الملف غير موجود يقوم بانشاء ملف جديد
w+فتح الملف في وضعية الكتابة والقراءة ويقوم بمسح المحتويات والكتابة وفي حال كان الملف غير موجود يقوم بانشاء ملف جديد
aإلحاق. فتح وكتابة إلى نهاية الملف أو إنشاء ملف جديد إذا لم يكن موجودا
a+قراءة / إلحاق. المحافظة على محتوى الملف عن طريق الكتابة إلى نهاية الملف
x
الكتابة فقط. بإنشاء ملف جديد. ويرجع خطأ إذا كان الملف موجود مسبقا
x+
الكتابة أوالقراءة. بإنشاء ملف جديد. ويرجع خطأ إذا كان الملف موجود مسبقا


مثال على فتح الملفات open files in PHP 


<html>
<body>
<?php
$file=fopen("welcome.txt","r") or exit("Unable to open file!");
?>

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

    مثال فتح ملف في بي اتش بي مع إنشاءه في حال عدم وجوده 

<?php

$file = "data.txt";

// فحص الملف هل هو موجود اما لا 

if(file_exists($file)){

    // محاولة فتح الملف للقراءة

    $handle = fopen($file, "r");

} else{

    echo " الملف غير موجود: خطأ.";

}

?>


دالة إغلاق الملفات close Files in PHP 

دالة  إغلاق الملفات بعد فتحها تستخدم لغلق الملف المستخدم فهي تحتاج الى اسم المؤشر وفي حال تم الاغلاق بنجاح تعيد قيمة صحيحة مالم خطأ. 

<?php
$file = fopen("test.txt","r");

//كود

fclose($file);
?>

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

  مثال لإغلاق ملف في البي إتش بي PHP close file  

 <?php

$file = "data.txt";

 

// فحص الملف هل هو موجود 

if(file_exists($file)){

    // فتح الملف للقراءة

    $handle = fopen($file, "r") or die("خطأ :  لا يمكن فتح الملف.");

        

    /* قم هنا بتنفيذ الاكواد التي تريدها على الملف الذي قمت بفتحه */

        

    // هنا إغلاق الملف

    fclose($handle);

} else{

    echo "خطأ: الملف المراد إغلاقه غير موجود.";

}

?>


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

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

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

كيفية قراءة عدد ثابت من الأحرف من ملف في php

 يمكن استخدام الدالة fread () لقراءة عدد محدد من الأحرف من الملف.  يمكن إعطاء الصيغة الأساسية لهذه الدالة.

     الصيغة العامة لقراءة عدد معين او طول معين من الأحرف من ملف php

fread(file handle, length in bytes)                


حيث
File  handle هو مسار الملف 
Length in bytes طول المراد قراءته بالبيت. 
في المثال التالي سنقرأ  20 بايت من ملف "data.txt" بما في ذلك المسافات.  لنفترض أن الملف "data.txt" يحتوي على فقرة من النص "الثعلب البني السريع يقفز فوق الكلب الكسول."

    مثال على قراءة طول معين من البايتات من ملف في php 

<?php

$file = "data.txt";

 

// فحص الملف هل هو موجود

if(file_exists($file)){

    // فتح الملف

    $handle = fopen($file, "r") or die("خطأ: لا يمكن فتح الملف.");

        

    // قرأة  ٢٠ بايت من الملف 

    $content = fread($handle, "20");

        

    // إغلاق الملف

    fclose($handle);

        

    // عرض النص الذي تم قرأة منه عشرون بايت 

    echo $content;

} else{

    echo "خطأ: الملف غير موجود.";

}

?>

 المخرجات هي 

    مخرجات قرأة جزء معين من ملف عن طريق طول البايتات 

الثعلب البني السريع


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

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

  مثال على قراءة محتويات ملف بالكامل

<?php

$file = "data.txt";

 

// فحص هل الملف موجود 

if(file_exists($file)){

    // فتح الملف للقراءة

    $handle = fopen($file, "r") or die("خطأ: لا يمكن فتح الملف.");

        

    // قراءة الملف

    $content = fread($handle, filesize($file));

        

    // إغلاق الملف

    fclose($handle);

        

    // عرض الملف

    echo $content;

} else{

    echo "خطأ: الملف غير موجود.";

}

?>


في المثال السابق استخدمنا الدالة file  وهي تقم بمعرفة حجم الملف لانه لا يمكن قراءة الملف دون معرفة حجمه وعن طريق حجم الملف تم تمريره كوسيطة الي دالة القراءة fread. 

الطريق الأسهل لقراءة ملف بالكامل php entire file 

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

  مثال لقراءة ملف بالكامل php 

<?php

$file = "data.txt";

 

// فحص الملف اذا كان موجود 

if(file_exists($file)){

    // قراءة وعرض الملف

    readfile($file) or die("خطأ : لايمكن قراءة الملف.");

} else{

    echo "خطأ: الملف غير موجود.";

}

?>


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

  مثال ٣ لقراءة الملف في php

<?php

$file = "data.txt";

 

// فحص الملف هل هو موجود

if(file_exists($file)){

    // قراءة الملف الي متغير سلسلة نصية

    $content = file_get_contents($file) or die("خطأ: لا يمكن فتح الملل.");

        

    // عرض محتويات النص 

    echo $content;

} else{

    echo "خطأ: الملف غير موجود.";

}

?>


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

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

 الطريقة الرابعة لقراءة ملف في php 

<?php

$file = "data.txt";

 

// فحص الملف 

if(file_exists($file)){

    // قرأءة الملف الي مصفوفة

    $arr = file($file) or die("خطأ: لا يمكن فتح الملف");

    foreach($arr as $line){

        echo $line;

    }

} else{

    echo "خطأ: الملف غير موجود.";

}

?>


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

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

  الصيغة العامة لدالة الكتابة على الملفات PHP 

fwrite(file handle, string)

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

 مثال على الكتابة في الملفات php 

<?php

$file = "note.txt";

    

// النص المراد كتابته

$data = "كل شيء في الحياة بإرادة الله ولا راد لقضاء وقدر الله غير الدعاء .";

    

// فتح الملف للكتابك

$handle = fopen($file, "w") or die("خطأ: لا يمكن فتح الملف.");

    

// كتابة البيانات

fwrite($handle, $data) or die ("خطا: لا يمكن الكتابة في الملف .");

    

// إغلاق الملف

fclose($handle);

    

echo " البيانات كتبت بنجاح زغرتي يا انشراح.";

?>


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

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

 طريقة أخرى للكتابة في الملفات PHP 

<?php

$file = "note.txt";

    

// البيانات المراد كتابته

$data = "حسن الظن بالله هو مفتاح الاستجابة  للدعاء، ان القدر والدعاء يتصارعان فإن قلب القدر الدعاء بقى قدرك كما هو وان غلب الدعاء القدر فإن قدرك سيتغير من قدر الله إلى قدر الله.";

    

// كتابة البيانات في الملف

file_put_contents($file, $data) or die("خطا: لا يمكن كتابة البيانات");

    

echo "تم بنجاح كتابة البيانات زغرتي يا انتصار.";

?>


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

  مثال على كتابة نص في آخر الملف php 

<?php

$file = "note.txt";

    

// النص المراد كتابته

$data = "اطلبوا الدعاء من الله  فإن الله عهد علي نفسه ليجيبن دعوة المضطر والمظلوم لو كان كافر وملحدا فمبالكم بدعوة مسلم يؤمن بعظيم العفو غفار";

    

// كتابة البيانات على الملل

file_put_contents($file, $data, FILE_APPEND) or die("خطأ: لا يمكن الكتابة على الملف.");

    

echo "تم كتابة البيانات بنجاح زغرتي يا سوسو .";

?>


كيفيةإعادة تسمية الملفات بدالة PHP rename ()

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

 مثال على إعادة تسمية ملف او مجلد في php

<?php

$file = "file.txt";

 

// فحص الملف هل هو موجود

if(file_exists($file)){

    // محاولة إعادة التسمية

    if(rename($file, "newfile.txt")){

        echo "تم بنجاح إعادة التسمية.";

    } else{

        echo "خطأ: لا يمكن إعادة تسمية الملف.";

    }

} else{

    echo "خطأ: الملف غير موجود.";

}

?>


كيفية حذف و إزالة الملفات باستخدام دالة unlink PHP ()

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

  حذف وإزالة ملف في php 

<?php

$file = "note.txt";

 

// فحص الملف اذا كان موجود 

if(file_exists($file)){

    // محاولة الحذف والازالة للملف

    if(unlink($file)){

        echo "تم إزالة وحذف الملف بنجاح";

    } else{

        echo "خطأ : لا يمكن حذف الملف.";

    }

} else{

    echo "خطأ : الملف غير مو جود.";

}

?>


ما هي دالة  الوصول لاخر الملف () feof

تستخدم هذه الدالة لفحص هل تم الوصول الى نهاية الملف اي اخر سطر وحرف في الملف.

 صيغة فحص هل تم الوصول إلى آخر الملف

if (feof($file)) echo "End of file";



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

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

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