مدیریت فایلها در PHP قسمت اول : خواندن و نوشتن

مهر ۲۸, ۱۳۹۱ توسط : سعید

در سایتها وظیفه ذخیره اطلاعات بر عهده دیتابیس میباشد.برای ذخیره کاربران ، مطالب سایت ، تعداد بازدید ها و …. از دیبتایس استفاده میکنیم.اما گاهی (وشاید بیشتر از گاهی) نیاز داریم تا برای ذخیره تنظیمات یا برای مدیریت عکسهای یک گالری عکس با فایلها سرو کار داشته باشیم.

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

در این سری از آموزشها خواهیم دید چگونه میتونیم فایلها رو مدیریت کنیم.مثل دستکاری محتویات فایلها متنی ، کپی فایلها و پوشه ها ، لیست کردن محتویات پوشه ها و … رو آموزش میبینید.

در ابتدا باید بگم که دو نوع فایل داریم.یک فایل با فرمت ascci و یک نوع فایل باینری. فایلهایی با قالب متنی از نوع اسکی هستند.مثل .txt , html , asp , .php این نوع فایلها بر پایه متن استوار هستند. اما فایلهای باینری بر پایه داده ها استوارند مثل .jpg , mp3 , .gif در کل در فایلهای باینری با نوع خاصی از ذخیره سازی اطلاعات سرو کار داریم.

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

تابع : file_get_contents

این تابع برای خواندن محتویات یک فایل به کار میره.

$txt = file_get_contents('readme.txt');

تابع file_put_contents

با استفاده از این تابع هم میتونید داخل یک فایل اطلاعات رو ذخیره کنید

file_put_contents($filePath , $data);

تابع file

این تابع محتویات یک فایل متنی را خوانده و خطوط فایل رو به صورت آرایه بر میگردونه.

$fileContent = file('readme.txt');

استفاده از توابع با پیشوند f

تعدادی از توابع بسیار کاربردی در PHP با پیشوند f معرفی شدند که برای مدیریت فایلها به کار میرن.

فایلهایی مثل :

در قسمت اول این آموزش به نحوه خواندن محتویات فایل به وسیله این توابع میپردازیم .

تابع fopen

ابن تابع آدرس یک فایل را میگیره و یک اشاره گر رو برای استفاده در بقیه توابع برگشت میده.

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

از اشاره گر $file میتونیم در توابع دیگه مانند fread استفاده کنیم.پارامتر اول مسیر فایل و پارامتر دوم نحوه دسترسی به فایل رو مشخص میکنه که در این مثال از r به معنای read (باز کردن فایل فقط برای خواندن ) استفاده شده.

تابع fclose

بعد از تمام شدن کار ما با فایل مورد نظر باید با استفاده از این تابع اتصال به فایل رو ببندیم.

fclose($file);

تابع fread

محتویات فایل رو به صورت رشته برگشت میده.

fread($file,filesize("test.txt"));

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

تابع filesize تعداد بایتهای یک فایل رو برمیگردونه که در مثال به این معنیه که تمام محتویات فایل مورد نظر با استفاده از تابع fread برگشت داده بشه.

تابع fgets

این تابع یک خط از فایل رو برمیگردونه.

echo fgets($file);

برای خواندن همه خطوط موجود در فایل به شکل زیر عمل میکنیم :

<?php
 $file = fopen("test.txt","r");
while(! feof($file))
 {
 echo fgets($file). "<br />";
 }
fclose($file);
 ?>

 

در هر بار اجرای حلقه با تابع feof  چک میکنیم که به انتهای فایل رسیدیم یا خیر.

تابع fgetc

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

  echo fgetc($file);

برای خواندن تمام کاراکترهای یک فایل :

<?php
 $file = fopen("test2.txt","r");
 
 while (! feof ($file))
   {
   echo fgetc($file);
   }
 
 fclose($file);
 ?>

 

تابع fwrite

با این تابع هم میتونید داخل فایل بنویسید.

fwrite($file , "phpro.ir");

دقت کنید که برای استفاده از این تابع باید فایل رو با سطح دسترسی w یا +w باز کنید که اجازه نوشتن داخل فایل رو داشته باشید.

<?php
$file = fopen("test.txt","w");
echo fwrite($file,"Hello World. Testing!");
fclose($file);
?> 


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

 

بازدید : ۱۲۵۴۶

مهر ۲۸, ۱۳۹۱ @ ۸:۱۶ ب.ظ

سلام
ببخشید توابع fgets و fgetc را یادتان رفت.
با تشکّر

پاسخ دادن
    سعید
    مهر ۲۸, ۱۳۹۱ @ ۱۰:۱۸ ب.ظ

    سلام
    دو تا تابع ماقبل آخر معرفی کردم این دو تابع رو

    پاسخ دادن
ایوب سیستم
مهر ۲۹, ۱۳۹۱ @ ۱۱:۱۰ ب.ظ

خیلی خوب توضیح داده بودین …. مممنون

پاسخ دادن
آبان ۲, ۱۳۹۱ @ ۲:۲۳ ب.ظ

سلام ببخشید منظور من در این قست است.
تعدادی از توابع بسیار کاربردی در PHP با پیشوند f معرفی شدند که برای مدیریت فایلها به کار میرن.

فایلهایی مثل :

fopen
fwrite
fread
fclose

در قسمت اول این آموزش به نحوه خواندن محتویات فایل به وسیله این توابع میپردازیم .
در این قسمت fgetc و fgets را نگفتید.

پاسخ دادن
آبان ۱۳, ۱۳۹۱ @ ۱۱:۴۱ ق.ظ

سلام
راستی از تابع fputs هم می شود به جای fwrite استفاده کرد.

پاسخ دادن
farhad
دی ۲۲, ۱۳۹۱ @ ۹:۵۹ ب.ظ

salam kheyli kam bod ama mamnon

پاسخ دادن
میترا
اردیبهشت ۱۵, ۱۳۹۲ @ ۹:۵۸ ب.ظ

یه سوال داشتم در رابطه با این مبحث نیست ، سوالم اینه که چطور میتونیم سایت چند زبانه طراحی کنیم؟ نحوه طراحی دیتابیس به چه صورته و همچنین نحوه ورود اطلاعاتی مثله خبر و … ؟ اگه کسی بتونه کمکم کنه ممنون میشم

پاسخ دادن
    سعید
    اردیبهشت ۲۳, ۱۳۹۲ @ ۴:۴۷ ب.ظ

    برای این مورد سعی میکنم در اولین فرصت مطلبی رو برای شما و بقیه دوستان قرار بدم.
    موفق باشید

    پاسخ دادن
آذر ۷, ۱۳۹۲ @ ۷:۴۲ ق.ظ

سلام دوست گرامی برای کار با فایلها در php باید فایل مورد نظر در مسیر ریشه ای php وجود داشته باشه مثلا برای زمپ فایل باید تو مسیرC:\xampp\htdocs باشه یا جای دیگه چون هر وخت بنده می خواهم با توابعی مثل fopen یا fclose روی یک فایل کار کنم ایرور عدم وجود فایل مربوطه رو می ده
ممنون از لطفتون موفق باشید در پناه حق

پاسخ دادن
مجتبی
خرداد ۲۵, ۱۳۹۳ @ ۶:۲۱ ب.ظ

سلام. مطالبتون عالی بود.
من میخواستم بدونم این توابع روی فایل txt فقط کار میکنند یا برای doc , docx هم بکار میرن؟؟
مممنون از لطفتون

پاسخ دادن
    سعید مقدم زاده
    تیر ۱۳, ۱۳۹۳ @ ۱۱:۵۶ ق.ظ

    سلام.
    خواهش میکنم.
    فایلهای docx , doc از فرمت متنی استفاده نمیکنن. البته فایلهای docx بافرمت xml ذخیره میشه. برای تغییرات در این فایلها بهتره از کلاسهای آماده استفاده کنی. مثلا کلاس PHP_word و…

    پاسخ دادن
arvin
شهریور ۲۵, ۱۳۹۴ @ ۱۰:۱۷ ق.ظ

پشما اینجا از تابع fread استفاده کردین ولی کل فایل رو میخونه برای خوندن ده بایت اول باید چیکا کنیم؟

پاسخ دادن
    Saeed Moqadam
    شهریور ۲۷, ۱۳۹۴ @ ۱:۵۸ ب.ظ

    پارامتر دوم تابع fread مقدار بایتهایی رو که میخواین بخونید رو وارد میکنید مثلا برای ۱۰ بایت اول

     fread($file,"10");
    
    پاسخ دادن
bardiademon
مهر ۱۱, ۱۳۹۵ @ ۶:۳۶ ب.ظ

خسته نباشید

ببخشید برا نوشتن ی فایل تکست در چند خط چطوری هست؟

هر کاریش میکنم خط بعد نمیره

با تشکر

پاسخ دادن
    سعید
    مهر ۲۴, ۱۳۹۵ @ ۹:۵۱ ب.ظ

    سلام
    از کاراکتر "\n" استفاده کن

    پاسخ دادن

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *


*