شرح قراءة الملفات في PHP
في كثير من المشاريع تحتاج PHP لقراءة بيانات من ملف: إعدادات، سجلات (Logs)، أو محتوى نصي. لذلك فهم قراءة الملفات خطوة عملية مهمة جداً.
في هذا الدرس ستتعلم أكثر الطرق استخداماً لقراءة الملفات في PHP بشكل واضح وآمن.
ما المقصود بقراءة الملفات في PHP؟
يعني فتح ملف موجود على الخادم ثم استخراج محتواه لعرضه أو معالجته داخل التطبيق.
PHP تفتح الملف → تقرأ المحتوى → تعرض أو تعالج البيانات → تغلق الملف
مثال 1: الطريقة السريعة باستخدام readfile()
الكود:
<?php
echo readfile("webdictionary.txt");
?>
شرح كود PHP:
readfile()تقرأ الملف وتطبع محتواه مباشرة.- القيمة المعادة تمثل عدد البايتات المقروءة.
مثال 2: قراءة الملف بالكامل عبر fopen + fread
الكود:
<?php
$myfile = fopen("webdictionary.txt", "r") or die("غير قادر على فتح الملف");
echo fread($myfile, filesize("webdictionary.txt"));
fclose($myfile);
?>
شرح كود PHP:
fopen(..., "r")يفتح الملف بوضع القراءة.fread()يقرأ عدد البايتات المحدد.filesize()يعطي حجم الملف، لذلك نقرأه كاملاً.fclose()يغلق الملف بعد الانتهاء.
مثال 3: قراءة الملف سطراً بسطر باستخدام fgets()
الكود:
<?php
$myfile = fopen("webdictionary.txt", "r") or die("غير قادر على فتح الملف");
while (!feof($myfile)) {
echo fgets($myfile) . "<br>";
}
fclose($myfile);
?>
هذه الطريقة مفيدة عندما يكون الملف كبيراً وتريد معالجته تدريجياً بدل قراءته دفعة واحدة.
أوضاع فتح الملف الأكثر استخداماً
| الوضع | المعنى | متى يُستخدم |
|---|---|---|
r |
قراءة فقط | عند عرض أو تحليل ملف موجود |
w |
كتابة (يمسح القديم) | عند إعادة إنشاء المحتوى من الصفر |
a |
إضافة في نهاية الملف | عند كتابة Logs أو إضافة سطور جديدة |
fclose() بعد الانتهاء لتجنب استهلاك موارد الخادم.
أخطاء شائعة للمبتدئين
- استخدام مسار ملف خاطئ فينتج خطأ "غير قادر على فتح الملف".
- نسيان إغلاق الملف بعد القراءة.
- استخدام
filesize()على ملف غير موجود. - قراءة ملفات كبيرة جداً دفعة واحدة بدون حاجة.
تمرين تطبيقي سريع
- أنشئ ملفاً نصياً باسم
notes.txtفيه 3 أسطر. - اقرأه مرة باستخدام
readfile(). - اقرأه مرة ثانية باستخدام
fopenوfgetsداخلwhile. - قارن بين الطريقتين من حيث البساطة والتحكم.
الأسئلة الشائعة — FAQ
كيف أقرأ ملفاً بسرعة في PHP؟
استخدم readfile() إذا كنت تريد عرض المحتوى مباشرة وبأقل كود ممكن.
ما الفرق بين readfile وfopen؟
readfile() بسيطة، أما fopen() فتعطيك تحكماً أكبر في طريقة القراءة.
ما معنى الوضع r؟
يعني فتح الملف للقراءة فقط، بشرط أن يكون الملف موجوداً مسبقاً.
لماذا أغلق الملف بـ fclose؟
لتحرير الموارد وتحسين أداء التطبيق.