الدرس 15: القراءة من ملف نصي
في الدرس السابق تعلمنا كيف نستخدم PHP للوصول إلى نظام الملفات في المزود، في هذا الدرس سنستخدم ما تعلمناه لقراءة ملف نصي عادي.
الملفات النصية يمكنها أن تكون مفيدة جداً لحفظ أنواع مختلفة من البيانات، وهي ليست بمرونة قواعد البيانات لكنها لا تتطلب ذاكرة كبيرة، فوق ذلك الملفات النصية بسيطة وتعمل في معظم الأنظمة.
فتح ملف نصي
يمكننا استخدام أمر fopen لفتح ملف نصي ويكتب الأمر بهذا الشكل:
fopen(filename, mode)
- filename
- اسم الملف الذي تريد فتحه.
- mode
- الطريقة يمكن أن تحدد بحرف "r" للقراءة (reading) أو "w" للكتابة (writing) أو "a" للإلحاق (appending)، في هذا الدرس سنشرح فقط كيف تقرأ الملف لذلك سنستخدم "r"، في الدرس التالي سنتعلم الكتابة والإلحاق في الملف النصي.
الأمثلة في هذا الدرس تستخدم ملفاً نصياً هو unitednations.txt، الملف يحوي قائمة بسيط لبرامج ومعونات الأمم المتحدة وعناوين مواقع هذه البرامج، بإمكانك تنزيل الملف أو إنشاء ملف خاص بك لتختبره.
أولاً لنجرب فتح ملف unitednations.txt:
<?php // Open the text file $f = fopen("unitednations.txt", "r"); // Close the text file fclose($f); ?>
مثال 1: قارئة سطر من ملف نصي
مع وظيفة fgets يمكن قراءة سطر من ملف نصي، هذه الطريقة تقرأ السطر حتى تصل إلى نهايته.
<html> <head> <title>Reading from text files</title> </head> <body> <?php $f = fopen("unitednations.txt", "r"); // Read line from the text file and write the contents to the client echo fgets($f); fclose($f); ?> </body> </html>
مثال 2: قراءة كل الأسطر في ملف نصي
<html> <head> <title>Reading from text files</title> </head> <body> <?php $f = fopen("unitednations.txt", "r"); // Read line by line until end of file while(!feof($f)) { echo fgets($f) . "<br />"; } fclose($f); ?> </body> </html>
في المثال الحلقة تقرأ كل سطر وتستخدم الوظيفة feof (for end-of-file) لتتأكد إن وصلت لنهاية الملف أم لا، فإن لم تصل سيكتب السطر.
بدلاً من استخدام حلقة لكل السطور يمكن تحقيق نفس النتيجة من خلال الوظيفة fread، إن كنت تعمل على ملف نصي كبير بآلاف الأسطر فاعلم أن fread تستخدم المزيد من الموارد أكثر من fgets، للملفات الصغيرة لن يشكل هذا فرقاً كبيراً.
المثال 3: دليل روابط بسيط
كما ذكر في بداية هذا الدرس، الملف النصي هو وسيلة رائعة لحفظ البيانات، ويتضح هذا في المثال التالي حيث سننشأ دليل روابط بسيط من محتويات الملف النصي unitednations.txt.
الملف كتب بطريقة نظامية حيث اسم البرنامج متبوعاً بفاصلة ثم موقع البرنامج، كما تتخيل يمكن إضافة المزيد من المعلومات بسهولة في هذا الملف الذي يحوي بيانات مفصولة بفاصلة.
للحصول على المعلومات من كل سطر علينا استخدام المصفوفة، اقرأ الدرس الثامن للمزيد من المعلومات حول المصفوفات.
<html> <head> <title>Reading from text files</title> </head> <body> <?php $f = fopen("unitednations.txt", "r"); // Read line by line until end of file while (!feof($f)) { // Make an array using comma as delimiter $arrM = explode(",",fgets($f)); // Write links (get the data in the array) echo "<li><a href='http://' . $arrM[1] . "'>" . $arrM[0]. "</a></li>"; } fclose($f); ?> </body> </html>
مفيد جداً، أليس كذلك؟ مبدئاً يمكنك الآن إضافة المئات من الروابط إلى الملف النصي أو بإمكانك إضافة مزيد من المعلومات.
في الدرس التالي سنلقي نظرة على كيفية الكتابة في ملف نصي.