به دهمین جلسه از آموزش برنامه نویسی PHP خوش آمدید. در این جلسه با مبحث کار با فایل ها در PHP – بخش دوم آشنا خواهیم شد.
کار با فایل ها در PHP – بخش دوم
از آنجا که مباحث مورد نظر برای آموزش کار با فایل ها در PHP مفصل بوده و تصمیم داشتیم که آنها را به طور کامل آموزش دهیم، لذا این آموزش را به دو بخش تقسیم کرده ایم. بخش اول را در جلسه قبل دیدیم و بخش دوم را در این جلسه مطرح خواهیم کرد.
مباحث این جلسه به شرح زیر است:
- خواندن اطلاعات از فایل
- خواندن فایل به صورت کاراکتر به کاراکتر
- خواندن فایل به صورت خط به خط
- به دست آوردن موقعیت اشاره گر فایل
- جابجایی موقعیت اشاره گر فایل
- نوشتن اطلاعات در فایل CSV
- خواندن اطلاعات از فایل CSV
کار با فایل ها در PHP – بخش دوم
خواندن اطلاعات از فایل در PHP
جهت خواندن اطلاعات از فایل در PHP از تابع ()file_get_contents استفاده می کنیم. این تابع نام و مسیر فایل مورد نظر را دریافت کرده و محتوای آن را بر می گرداند.
1 2 3 4 5 |
<?php echo file_get_contents('newfile.txt'); ?> |
جهت خواندن اطلاعات از فایل در PHP تابع دیگری نیز وجود دارد. نام این تابع ()readfile است. عملکرد این تابع مشابه تابع ()file_get_contents است با این تفاوت که تعداد کاراکترهای موجود در فایل را نیز بر می گرداند.
1 2 3 4 5 |
<?php echo readfile('newfile.txt'); ?> |
خواندن فایل به صورت کاراکتر به کاراکتر در PHP
جهت خواندن فایل به صورت کاراکتر به کاراکتر در PHP از تابع ()fgetc استفاده می کنیم. در قطعه کد زیر با یک حلقه while تا زمانیکه به انتهای فایل نرسیده ایم، محتویات فایل را به صورت کاراکتر به کاراکتر خوانده و در خروجی چاپ می کنیم.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php $my_file = fopen('newfile.txt', 'r'); while(!feof($my_file)) { $char = fgetc($my_file); echo $char; } fclose($my_file); ?> |
خواندن فایل به صورت خط به خط در PHP
جهت خواندن فایل به صورت خط به خط در PHP از تابع ()fgets استفاده می کنیم. در قطعه کد زیر با یک حلقه while تا زمانیکه به انتهای فایل نرسیده ایم، محتویات فایل را به صورت خط به خط خوانده و در خروجی چاپ می کنیم.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php $my_file = fopen('newfile.txt', 'r'); while(!feof($my_file)) { $line = fgets($my_file); echo $line; } fclose($my_file); ?> |
به دست آوردن موقعیت اشاره گر فایل در PHP
برای به دست آوردن موقعیت اشاره گر فایل در PHP از تابع ()ftell استفاده می کنیم. در قطعه کد زیر ابتدا توسط تابع ()fgets به اندازه ۶ کاراکتر از فایل را خوانده و سپس توسط تابع ()ftell موقعیت اشاره گر فایل را بدست می آوریم. دقت داشته باشید که تعداد کاراکترهای خوانده شده توسط تابع ()fgets همواره یکی کمتر از آن چیزی است که به عنوان پارامتر ذکر شده است.
1 2 3 4 5 6 7 8 9 10 11 |
<?php $my_file = fopen('newfile.txt', 'r'); fgets($my_file, 7); // 7 - 1 = 6 echo ftell($my_file); fclose($my_file); ?> |
جابجایی موقعیت اشاره گر فایل در PHP
برای جابجایی موقعیت اشاره گر فایل در PHP از تابع ()fseek استفاده می کنیم. تابع ()fseek سه پارامتر دارد. پارامتر اول همان فایلی است که می خواهیم جابجایی موقعیت اشاره گر فایل را در آن انجام دهیم. پارامتر دوم نیز میزان جابجایی اشاره گر فایل است. پارامتر سوم مبدا حرکت را مشخص می کند. این پارامتر سه مقدار می تواند داشته باشد. ثابت SEEK_SET یعنی نسبت به ابتدای فایل. SEEK_CUR یعنی نسبت به موقعیت جاری و SEEK_END یعنی نسبت به انتهای فایل.
جهت توضیحات بیشتر به ویدئوی ضمیمه آموزش مراجعه نمایید.
1 2 3 4 5 6 7 8 9 10 11 |
<?php $my_file = fopen('newfile.txt', 'r'); fseek($my_file, 6, SEEK_SET); // SEEK_SET | SEEK_CUR | SEEK_END echo fgets($my_file); fclose($my_file); ?> |
نوشتن اطلاعات در فایل CSV
فایل Comma Separated Values – CSV یک فایل ساخت یافته است که اطلاعات موجود در آن با کاما , از هم جدا شده اند. فایلهای CSV هم با نرم افزارهای ویرایشگر متن مانند Notepad و هم توسط نرم افزار Excel قابل مشاهده و ویرایش هستند. ما قصد داریم که اطلاعات زیر را درون یک فایل CSV بنویسیم. این اطلاعات شامل نام، سن و ایمیل تعدادی از افراد است.
1 2 3 |
john,22,a@b.com jack,25,c@d.com tom,30,e@f.com |
نوشتن اطلاعات در فایل CSV توسط تابع ()fputcsv انجام می شود. این تابع هر بار یک خط اطلاعات را در درون فایل CSV می نویسد. ما در ابتدا محتویاتی را که می خواهیم درون فایل بنویسیم، در یک آرایه به نام values ذخیره کرده ایم. سپس با استفاده از تابع ()explode هر یک از عناصر این آرایه را از هم جدا کرده و به عنوان یک خط مجزا در فایل CSV می نویسیم. به این صورت می توان عمل نوشتن اطلاعات در فایل CSV را انجام داد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<?php $my_file = fopen('mycsv.csv', 'w'); $values = array( 'john,22,a@b.com' , 'jack,25,c@d.com' , 'tom,30,e@f.com' , ); foreach($values as $line) { fputcsv($my_file, explode(',', $line)); } fclose($my_file); ?> |
خواندن اطلاعات از فایل CSV
جهت خواندن اطلاعات از فایل CSV از تابع ()fgetcsv استفاده می کنیم. این تابع هر بار یک خط از محتویات فایل CSV را می خواند. از آنجا که مقدار برگشتی این تابع یک آرایه است، ما محتوای مقدار بازگشتی را بصورت خط ۷ در خروجی چاپ کرده ایم. به این صورت می توان عمل خواندن اطلاعات از فایل CSV را انجام داد.
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php $my_file = fopen('mycsv.csv', 'r'); while($line = fgetcsv($my_file, 0, ',')) { echo "{$line[0]} {$line[1]} {$line[2]} <br>"; } fclose($my_file); ?> |
برای دریافت اطلاعات و جزئیات بیشتر در مورد کار با فایل ها در PHP به ویدئوی ضمیمه آموزش مراجعه فرمایید.
به پایان این جلسه آموزشی رسیدیم. در آینده با بخشهای دیگری از زبان PHP آشنا خواهیم شد. با ما همراه باشید…
4 دیدگاه. ارسال دیدگاه جدید
سلام ممنون بخاطر آموزش روان شما
در یکی از بخشها، از حلقه while و تابع feof استفاده کردید تا کاراکتر به کاراکتر محتویات یک فایل را بخوانید.
سوال: چرا تابع feof را با علامت تعجب not می کنید؟ علت خاصی داره؟
خب اگه بگیم این حلقه تا زمانیکه به انتهای فایل برسد ادامه پیدا کند یعنی اون علامت تعجب را نزاریم، حلقه که اجرا می شود. مشکلش چیه؟
دوست عزیز تابع ()feof زمانیکه به انتهای فایل برسه مقدار true برمی گردونه. ما میخوایم تا زمانیکه هنوز به انتهای فایل «نرسیدیم» حلقه مون تکرار بشه و کاراکترها رو بخونیم.
علامت تعجب (not) هم دقیقا به همین علت استفاده شده. به کلمه «نرسیدیم» دقت کنید.
سلام ممنون بخاطر آموزشاتون
تابعی در php هست که بیاد یک فایل رو مثلا فایل txt. رو باز کنه و تعداد خطهایی که توش متن نوشته شده رو بگه؟
دوست عزیز برای اینکار میتونید از قطعه کد زیر استفاده کنید: