أصبحت قواعد بيانات MySQL و Access أكثر فأكثروسائل الوصول لتخزين البيانات. ولكن في أوائل التسعينات ، كان من الشائع العمل مع الملفات في PHP ، حفظ السجلات في ملفات نصية منسقة بتنسيق CSV ، مفصولة بخطوط جديدة.
قواعد البيانات مريحة ، ولكن يجب على كل مطورعلى الأقل بعض المعارف الأساسية لكيفية قراءة وكتابة الملفات. ربما يتأمل الكثيرون السؤال التالي: "لماذا أحتاج إلى معرفة ذلك؟ إذا كنت تستخدم ملفات ، يتم كتابتها في XML ، وأستخدم المحلل اللغوي فقط. "
إذن هناك بعض الأسباب التي قد تدعو الحاجة إلى الملفات:
قراءة الملفات والكتابة هي العمليات الأساسية.إذا كنت بحاجة إلى قراءة المستند ، يجب أولاً فتحه. بعد ذلك ، اقرأ المحتوى بأكبر قدر ممكن ، ثم أغلق الملف. لكتابة معلومات إلى مستند ، يجب أولاً فتحه (أو ، ربما ، إنشائه إذا لم يكن قد تم إنشاؤه بالفعل). بعد ذلك ، اكتب البيانات الضرورية وأغلقها عند الانتهاء.
ملائمة للاستخدام والوظائف المضمنة التي تجعل الفتح والإغلاق تلقائيًا. وهي متوفرة في PHP5. كما يجب أن تكون على دراية بسمات الملفات ، أي مع خصائصها.
يمكن أن يقولوا:
من الأفضل تعلم كل السمات الأساسية للعمل مع الملفات في PHP. هذا سيسهل كثيرا العمل.
قد تحتاج إلى معرفة آخر مرة تم فيها تحرير الملف. في هذه الحالة ، تأتي الوظائف لإنقاذ: fileatime () ، filemtime () و filectime ().
<؟فب
$ formatDate = "D d M Y g: i A"؛
$ timeA = fileatime ($ file)؛
$ timeM = filemtime ($ file)؛
$ timeC = filectime ($ file)؛
صدى $ الملف. "تم النظر إليه". التاريخ ($ formatDate، $ timeA). ".
"؛
صدى $ الملف. "كان لديه أحدث تغيير في العقدة". التاريخ ($ formatDate، $ timeM). ".
"؛
صدى $ الملف. "لقد تغيرت." التاريخ ($ formatDate، $ timeC). ""؛
هنا يسترد الرمز آخر طابع زمني للدخول ويعرضه:
تعرض الدالة filectime () وقت تغيير المعلومات المختلفة المتعلقة بالملف (على سبيل المثال ، حقوق الوصول) ، ويظهر ملف filemtime () تغييرات الملف نفسه.
تم استخدام الدالة date () لتنسيق الطابع الزمني Unix الذي تم إرجاعه بواسطة وظائف الملف * time ().
لمعرفة ما إذا كان العمل مع الملفات قد تم بالفعل في PHP ، يمكنك استخدام وظيفة is_file () أو وظيفة is_dir () للتحقق مما إذا كان هذا دليلًا.
<؟ php
صدى $ الملف. (is_file (ملف $)؟ "": "لا"). "ملف.
" ؛
صدى $ الملف. (is_dir (ملف $)؟ "": "لا"). "السوق"؛
مثال لإخراج الكود:
وبهذه الطريقة يمكنك تجنب الأخطاء وعدم فتح "الملف غير المقصود" عن غير قصد. في PHP ، العمل مع الملفات والأدلة مشابه.
قبل العمل مع ملف ، يمكنك التحقق مما إذا كان قابلاً للقراءة أو قابل للكتابة. للقيام بذلك ، استخدم الدالتين is_writable () و is_readable ().
<؟ php
صدى $ الملف. (is_readable (ملف $)؟ "": "لا"). "قراءة.
" ؛
صدى $ الملف. (is_writable (ملف $)؟ "": "لا"). "كتب"؛
تُرجع هذه الوظائف منطقية وتوضح ما إذا كان يمكن تنفيذ العملية في ملف.
يعرض الكود القيم التالية على الشاشة:
باستخدام عامل التشغيل الثلاثي ، يمكنك تحديد ما إذا كان الملف متاحًا أم لا.
لمعرفة حجم الملف ، استخدم الدالة filesize (). سيظهر بالبايت.
<؟ php
$ file = "C: Windowsfile.ini" ؛ $ size = filesize ($ file) ؛
صدى $ الملف. "له حجم." حجم $. "بايت"؛
تعرض الوظيفة ما يلي:
استخدام ملف Windows هناتؤكد فارق بسيط واحد. الخط المائل العكسي له معنى خاص كحرف الهروب. ستحتاج إلى تجنب ذلك عن طريق إضافة شرطة مائلة عكسية أخرى.
إذا لم يتم إنشاء الملف بعد ، ستشير وظيفة filesize () إلى خطأ وخطأ. لذلك ، تحقق أولاً من وجود الملف file_exists () المطلوب.
<؟ php
$ file = "C: Windowsfile.ini" ؛ إذا (file_exists ($ file)) {$ size = filesize ($ file) ؛
صدى $ الملف. "له حجم." حجم $. "byte."؛} ملف {echo $ آخر. "لم يتم العثور على الملف." ؛}
يجب أن يكون الاختيار file_exists () دائمًا قيد التشغيل بحثًا عن الأمان.
يوضح القسم السابق مقدار ما تستطيعتعرف على الملفات التي تعمل معها قبل البدء في القراءة أو الكتابة إليها. يمكنك الآن فهم كيفية قراءة محتويات الملف.
وظائف التعامل مع ملفات PHP تجعل المهمة أسهل.في هذه الحالة ، تحتاج إلى file_get_contents (). سيقرأ محتويات الملف بالكامل في متغير دون الحاجة إلى فتح الملف أو إغلاقه من تلقاء نفسه. يعد هذا مناسبًا عندما يكون حجم الكتابة صغيرًا نسبيًا ، نظرًا لأن قراءة 1 غيغابايت من البيانات في الأرشيف ليست منطقية دائمًا في PHP. العمل باستخدام ملفات .ini ووظيفة file_get_contents () موضحة أدناه.
<؟ php
$ file = "c: windowsfile.ini"؛ $ file1 = file_get_contents ($ file)؛
صدى $ file1 ؛
للملفات الكبيرة أو فقط حسباحتياجات النص الخاص بك ، قد يكون من الحكمة معالجة التفاصيل بنفسك. هذا يرجع إلى حقيقة أنه بمجرد فتح الملف ، يمكنك البحث عن ملاحظة محددة فيه وقراءة أكبر قدر من البيانات كما تريد. يتم استخدام الدالة fopen () لفتح ملف.
<؟ php
$ file = "c: windowsfile.ini"؛ $ file1 = fopen ($ file، "r")؛
لاستخدام دالة fopen () ، يلزم وجود وسيطتين:
تقوم الدالة بإرجاع مؤشر أو دفق إلى ملف مخزن في $ file1 المتغير. يجب استخدامه في جميع الأوامر اللاحقة عند العمل مع ملف.
نظام الحكم | قيمة | موضع المؤشر | إذا كان الملف غير موجود؟ |
ص | للقراءة فقط | بداية الملف | سيعطي خطأ |
في | سجل فقط | بداية الملف | سيخلق جديد |
و | سجل فقط | نهاية الملف | سيخلق جديد |
لقراءة سطر واحد في كل مرة من ملف مفتوح ، يمكنك استخدام وظيفة fgets ().
<؟ php
$ file = "c: windowsfile.ini"؛ $ file1 = fopen ($ file، "r")؛
القيام {صدى fgets ($ file1). "
" ؛}
بينما (! feof ($ file1)) ؛
fclose ($ file1) ؛
يعد استخدام حلقة المهام أثناء التشغيل أمرًا جيدًايمكنك الاختيار مسبقًا لمعرفة عدد الأسطر الموجودة في الملف. تتحقق الدالة feof () مما إذا كان الملف قد وصل إلى الاكتمال ويستمر التكرار حتى الوصول إلى نهاية حالة الملف. بعد القراءة ، استخدم الدالة fclose () لإغلاق المستند.
وضعين شائع الاستخدام عند الكتابة إلى ملف بهباستخدام دالة fwrite (): "w" و "a". "W" تعني أنك بحاجة إلى الكتابة إلى المستند ، ولكنها ستحذف أي محتويات مسبقًا ، "أ" - إضافة بيانات جديدة إلى ما هو موجود بالفعل في الملف. يجب أن تتأكد من استخدام الخيار الصحيح.
في المثال التالي ، سيتم استخدام وضع "a" للتسجيل.
<؟ php
$ myFile = "files.txt"؛ $ file1 = fopen ($ myFile، "a")؛
الناتج $ = "الموز". PHP_EOL؛ fwrite ($ file1، $ output) ؛
الناتج $ = "الصين". PHP_EOL ،
fwrite ($ file1، $ output) ؛
fclose ($ file1) ؛
أولاً ، يتم تعيين اسم الملف للمتغير ، ثميتم فتحه في الوضع "أ" للإضافة. يتم تعيين البيانات المراد كتابتها إلى الناتج $ المتغير و fwrite () ، ويتم إضافة المعلومات إلى الملف. يتم تكرار العملية لإضافة سطر آخر ، ثم يتم إغلاق المستند باستخدام fclose ().
يضيف الثابت المحدد مسبقًا PHP_EOL حرف سطر جديد خاص بالنظام الأساسي الذي يعمل PHP عليه مع الملفات النصية.
يجب أن تبدو محتويات الملف بعد تنفيذ الكود أعلاه كما يلي:
يمكن أيضًا وظيفة file_put_contents ()الكتابة إلى ملف. يقبل اسم الملف والبيانات المراد كتابتها وثابت FILE_APPEND إذا كان يجب إضافة بيانات (سيحل محل محتويات الملف بشكل افتراضي).
هذا هو نفس المثال أعلاه ، ولكن هذه المرة باستخدام file_put_contents ().
<؟ php
$ myFile = "files.txt"؛
file_put_contents ($ myFile ، موز. PHP_EOL) ؛
file_put_contents ($ myFile ، الصين. PHP_EOL ، FILE_APPEND) ؛
يجب عليك العمل مع هذه الوظائف كثيرًا ، لذا من الأفضل تذكرها. بالإضافة إلى ذلك ، يمكنهم العمل في يوم من الأيام مع ملفات PHP لتخفيف بعض المهام المعقدة.