آموزش خواندن متن از درون فایل در PHP
تاریخ : يکشنبه، 8 آذر، 1388
موضوع : PHP


امروز با هم به آموزشی درمورد چگونگی خواندن خطوط نوشتاری از درون یک فایل  می پردازیم . در کل خواند فایل ها در زبان php یکی از مبحث های  جنجالی و حساس است که اگر  به درستی  انجام نشود ممکن است آسیب هایی به سایت مقصد بزند . از این رو آموزش این مورد بسیار پراهمیت است .  در اولین نگاه برای انجام عملیات خواندن خطوط  از فایل   نزدیک ترین   ابزار   تابع  file() به ذهن خواهد رسید .  مشکل استفاده از این تابع  خواندن کل یک فایل به صورت مقدار آرایه ای array  است از این رو در حافظه سرور ( لوکال )  هر عملیات زیر دست بر روی آرایه  مانند foreach()  منجر به  پردازش دوبرابری  آن  خواهد شد  برای مثال خواندن  فایل log  دو گیگی  حافظه ای برابر با 4 گیگ نیاز خواهد داشت که برای خواندن چندصد خط متن بی جهت خواهد بود .

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


بخش تابع نویسی :


<?php

/**
 *
 * Read a line number from a file
 *
 * @param    string    $file    The path to the file
 * @param    int    $line_num    The line number to read
 * @param    string    $delimiter    The character that delimits lines
 * @return    string    The line that is read
 *
 */
function readLine($file$line_num$delimiter="n")
{
    
/*** set the counter to one ***/
    
$i 1;

    
/*** open the file for reading ***/
    
$fp fopen$file'r' );

    
/*** loop over the file pointer ***/
    
while ( !feof $fp) )
    {
        
/*** read the line into a buffer ***/
        
$buffer stream_get_line$fp1024$delimiter );
        
/*** if we are at the right line number ***/
        
if( $i == $line_num )
        {
            
/*** return the line that is currently in the buffer ***/
            
return $buffer;
        }
        
/*** increment the line counter ***/
        
$i++;
        
/*** clear the buffer ***/
        
$buffer '';
    }
    return 
false;
}
?>

 

مثال عینی استفاده

 


<?php

/*** make sure the file exists ***/
$file 'my_file.txt';

if( 
file_exists$file ) && is_readable$file ) )
{
    echo 
readLine($file6);
}
else
{
    echo 
"Cannot read from $file";
}
?>

 

 
ایده ی گشتن  درون یک فایل و یافتن  شماره خط  مورد نظر  پردازش حافظه مناسبی از سیستم را در برخواهد داشت . اما  بهتر است بگذاریم  زبان php  این عملیات را برای ما انجام دهد . در زبان  php   تکنیک SPL File Object  چنین کاری را برای شما خواهد کرد .
 
 

<?php

/*** the file to read ***/
$file 'foo.txt';

        
/**
 *
 * Read a line number from a file
 *
 * @param    string    $file    The path to the file
 * @param    int    $line_num    The line number to read
 * @return    string    The line that is read
 *
 */
function readLine$file$line_number )
{
        
/*** read the file into the iterator ***/
        
$file_obj = new SplFileObject$file );

        
/*** seek to the line number ***/
        
$file_obj->seek$line_number );

        
/*** return the current line ***/
        
return $file_obj->current();
}

echo 
readLine$file345678 );

?>
 
 
 
این مقاله برای افرادی مناسب است که به زبان php تا حدودی تسلط کافی دارند
موفق باشید
نیوک لرن

-->






منبع این مقاله : نیوک لرن
http://www.nukelearn.com

آدرس این مطلب :

http://www.nukelearn.com/modules.php?name=News&file=article&sid=48&title=آموزش-خواندن-متن-از-درون-فایل-در-php