i have these 2 functions: Reading a Particular Line in a File Code: $line_counter = 0; $desired_line = 29; $fh = fopen('vacation-hotspots.txt','r') or die($php_errormsg); while ((! feof($fh)) && ($line_counter <= $desired_line)) { if ($s = fgets($fh,1048576)) { $line_counter++; } } fclose($fh) or die($php_errormsg); print $s; AND: Modifying a File in Place Without a Temporary File: $fh = fopen('message.txt','r+') or die($php_errormsg); // figure out how many bytes to read $bytes_to_read = filesize('message.txt'); // initialize variables that hold file positions $next_read = $last_write = 0; // keep going while there are still bytes to read while ($next_read < $bytes_to_read) { /* move to the position of the next read, read a line, and save * the position of the next read */ fseek($fh,$next_read); $s = fgets($fh,1048576) or die($php_errormsg); $next_read = ftell($fh); // convert <b>word</b> to *word* $s = preg_replace([EMAIL="'@<b[^>]*>(.*?)</b>@i','*$1*',$s"]'@<b[^>]*>(.*?)</b>@i','*$1*',$s[/EMAIL]); // convert <i>word</i> to /word/ $s = preg_replace([EMAIL="'@<i[^>]*>(.*?)</i>@i','/$1/',$s"]'@<i[^>]*>(.*?)</i>@i','/$1/',$s[/EMAIL]); /* move to the position where the last write ended, write the * converted line, and save the position for the next write */ fseek($fh,$last_write); if (-1 == fwrite($fh,$s)) { die($php_errormsg); } $last_write = ftell($fh); } // truncate the file length to what we've already written ftruncate($fh,$last_write) or die($php_errormsg); // close the file fclose($fh) or die($php_errormsg); both work well to read a specific line of the file and the other to replace a part of the file or all the file, could some one tell me a function to combine that i mean a function to replace part of a line or all the line of an opened file but just in the line that i want, thanks a lot