1. We have moved from vBulletin to XenForo and you are viewing the site in the middle of the move. Though the functional aspect of everything is working fine, we are still working on other changes including the new design on Xenforo.
    Dismiss Notice

php file manipulation

Discussion in 'PHP' started by martabau, Dec 23, 2008.

  1. martabau

    martabau New Member

    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
     
    Last edited by a moderator: Dec 24, 2008

Share This Page