نوشتن فایل در PHP

در پیاده سازی پروژه با زبان برنامه نویسی PHP معمولاً نیاز پیدا میکنیم تا یک فایل را خوانده، بر اساس اطلاعات موجود در آن تصمیم گیری کرده و یا اطلاعاتی را داخل فایل بنویسیم.

روش های مختلفی برای خواندن و نوشتن محتوای یک فایل در زبان PHP وجود دارد؛ در ادامه این مقاله به بررسی نحوه استفاده روش های نوشتن و ایجاد یک فایل خواهیم پرداخت.

نوشتن فایل در PHP

 

قبلا و در مقاله دیگری درمورد خواندن فایل در زبان برنامه نویسی PHP صحبت کردیم و این مسئله را آموزش دادیم.

جهت نوشتن روی فایل، ابتدا می بایست فایل را باز کنیم. برای باز کردن فایل از تابع fopen() استفاده میکنیم.

 

خروجی این تابع یک شی از نوع File Handler بوده که برای اشاره و مشخص کردن فایل باز شده استفاده خواهد شد.

تابع fopen دو پارامتر ورودی میگیرد؛ اولین ورودی مسیر و نام فایل و دومین ورودی سطح دسترسی که روی هندلر فایل ایجاد خواهد شد را مشخص خواهد کرد.

 

وقتی میخواهیم با فایل ها کار کنیم، یکی از مسائلی که وجود دارد، سطح دسترسی آنهاست. در صورتی که اجرای قطعه کد فوق با خطا روبرو شد، می بایست سطح دسترسی فایل مورد نظر را بررسی نمایید.

اگر فایل به درستی باز نشود، معمولاً بقیه کدهای صفحه ما که برای کار کردن با فایل مورد نظرمان هست با ارور مواجه خواهند شد. به جهت جلوگیری از ادامه روند اجرای کدها میتوانیم در هنگام بروز خطا در باز کردن فایل، تابع die را صدا بزنیم.

از تابع die در هنگام باز کردن یک فایل میتوانیم به شیوه زیر استفاده نماییم:

 

زمانی که از تابع fopen() برای باز کردن یک فایل استفاده میشود، اگر آن فایل در مسیر مشخص شده قرار نداشته باشد، PHP به طور خودکار آن فایل را در مسیر و با نام مشخص شده ایجاد کرده و سپس آنرا برای نوشتن باز میکند.

 

برای نوشتن یک متن در فایل از تابع fwrite() در زبان PHP استفاده میشود.

این تابع دو مقدار ورودی دریافت میکند، مقدار ورودی اول یک شی از نوع File handler (هندلر) بوده و مقدار دوم رشته ای (String) که میخواهیم درون فایل نوشته شود را مشخص میکند.

 

میتوانیم تابع fwrite را روی یک فایل باز شده چندین بار صدا بزنیم و در ادامه اطلاعات نوشته شده قبلی، اطلاعات دیگری بنویسیم. برای مثال قطعه کد زیر یک متن را در دو خط پشت سر هم درون فایل مینویسد.

 

در پایان کار با فایل، می بایست فایل باز شده را ببندیم و مشخص کنیم که دیگر با این فایل کاری نداریم. در صورتی که عملیات بستن فایل انجام نشود، تغییرات انجام شده روی فایل اعمال نخواهد شد.

برای بستن فایل باز شده از تابع fclose() استفاده میکنیم که به عنوان تنها ورودی، متغیر مربوط به File Handler را ورودی میگیرد.

 

اکنون فایل options.ini ما محتوایی مشابه زیر خواهد داشت.

 

اگر دوباره همین فرآیند را با دیتاهای جدید روی همین فایل انجام دهید، خواهید دید که پس از پایان اجرای برنامه، محتوای قبلی ما به طور کامل از بین رفته و محتوای جدید جایگزین آن شده است.

برای اینکه بتوانیم دیتاهای خود را در ادامه اطلاعات قبلی در فایل ثبت کنیم، می بایست فایل را در حالت append (به معنای الحاق کردن) باز کنیم.

به جهت باز کردن فایل برای افزودن محتوای جدید به آن، تابع fopen() را به جای w با a به عنوان آرگومان دوم صدا میزنیم.

 

با اجرای قطعه کد فوق، به انتهای فایل قبلی، یک خط جدید و با محتوای www.SabzElco.ir اضافه خواهد شد.

 

 

یک تابع دیگر برای نوشتن درون فایل در زبان برنامه نویسی PHP وجود دارد به نام fputs().

تابع fputs() به عنوان یک تابع کمکی برای fwrite استفاده میشود. این تابع سه ورودی میگیرد که دو ورودی اول اجباری و ورودی سوم اختیاری است.

ورودی اول این تابع همان متغیر فایل هندلر و ورودی دوم دیتا (رشته) مورد نظر ما جهت ثبت در فایل می باشد.

این تابع تا زمانی نوشتن را ادامه میدهد که به پایان فایل یا یک اندازه مشخص (length که در پارامتر سوم مشخص میشود) برسد.

پس از اجرا، تعداد بایت هایی که با موفقیت درون فایل نوشته شده را به عنوان خروجی باز میگرداند و اگر مشکلی در درج اطلاعات وجود داشته، false را خروجی میدهد.

همانطور که در ابتدا نیز گفته شد، از این تابع معمولاً استفاده نمیشود و در اکثر کدها از تابع fwrite برای نوشتن روی فایل استفاده شده است.

 

توجه داشته باشید که هر دو تابع fwrite() و fputs() دارای ویژگی binary-safe هستند، به این معنا که با استفاده از این توابع میتوان فایل های binary نظیر تصاویر، فرمت های خاص، فایل های متنی خاص و … را ایجاد کرد.



[ برچسب ها ] : , , , , ,
ارسال شده در : بخش کامپیوتر
نظر شما در مورد اين پست چيست ؟

دیدگاه خود را به ما بگویید.

 
 
  دکتری تخصصی برق الکترونیک
طراح مدارهای الکترونیکی
برنامه نویس انواع میکروها
مشاوره و اجرای لینک های وایرلس
پیاده سازی سیستم های مبتنی بر شبکه
E_mail: electronic@sabzelco.ir
Tel: 09150462401
توسعه دهنده برنامه های سمت سرور

طراحی و برنامه نویسی سایت و پرتال های حرفه ای

E_mail: computer@sabzelco.ir
Tel: 09371974233