خواندن از فایل

در PHP توابعی وجود دارند که از انها برای خواندن محتویات یک فایل استفاده می شود. برخی از این توابع محتویات را به صورت یکجا، برخی کاراکتر به کاراکتر و بعضی دیگر خط به خط می خوانند. حال به توضیح هر یک از آنها می پردازیم. فرض کنید که یک فایل با نام Test.txt در درایو :C که متن زیر در داخل آن نوشته شده است دارید :
read-file-php-1
ساده ترین روش برای خواندن محتویات فایل بالا استفاده از دو تابع ()readfile و ()file_get_contents می باشد. ابتدا می خواهیم محتویات فایل را با استفاده از تابع ()readfile بخوانیم. به کد زیر توجه کنید :

<?php
    $fileContent = readfile("c:\Test.txt");
    echo $fileContent;
?>

کد بالا را با نام ReadFile در پوشه www ذخیره و اجرا کنید :
read-file-php-2
به عدد 41 در شکل بالا توجه کنید این عدد تعداد کاراکترهایی است که توسط این تابع خوانده شده است، که تعداد کل کاراکترها با احتساب فضاهای خالی می باشد. دلیل در سه خط نوشته شدن فایل اصلی هم ، وجود تگ <br> می باشد. اکنون با استفاده از تابع ()file_get_contents این کار را انجام می دهیم. کد بالا را به صورت زیر تغییر دهید :

<?php
    $fileContent = file_get_contents("c:\Test.txt");
    echo $fileContent;
?>

فایل را ذخیره و اجرا کنید :
read-file-php-3
همانطور که در شکل بالا مشاهده می کنید این تابع فقط محتویات فایل را می خواند و تعداد کاراکترهای خوانده شده را نمایش نمی دهد. لازم به ذکر است که هر دو کد بالا را می توان به صورت خلاصه نیز نوشت :

<?php
    echo readfile("c:\Test.txt");
?>
<?php
    echo file_get_contents("c:\Test.txt");
?>

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

  1: <?php
  2:     $fileName = fopen("c:\Test.txt","r");
  3:     while(!feof($fileName))
  4:     {
  5: 	    $readFile = fgetc($fileName);
  6: 	    echo $readFile;
  7:     }	
  8: ?> 

در کد بالا و در خط 2 ابتدا فایل را باز کرده ایم. در خط 3 و در شرط حلقه تابع ()feof را به کار برده ایم. کار این تابع این است که چک می کند که آیا برنامه به آخر یک فایل رسیده است یا خیر؟ در کل در خط 3 می گوییم که تا زمانی که برنامه به انتهای فایل نرسیده است عمل تکرار را انجام بده. عمل تکراری در برنامه هم در خط 5 آماده است. در این خط با استفاده از تابع ()fgetc تک تک کاراکترهای داخل فایل را می خوانیم و در داخل متغیری قرار می دهیم و در خط 6 مقدار این متغیر را چاپ می کنیم. برای خواندن یک فایل به صورت خط به خط هم کافیست که به جای تابع ()fgetc از تابع ()fgets به صورت زیر اسفاده کنید :

  1: <?php
  2:     $fileName = fopen("c:\Test.txt","r");
  3:     while(!feof($fileName))
  4:     {
  5: 	    $readFile = fgets($fileName);
  6: 	    echo $readFile;
  7:     }	
  8: ?> 

خروجی هر دو کد بالا به صورت زیر است :
read-file-php-3

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