php file manipulation

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

  1. martabau

    martabau New Member

    Joined:
    Dec 23, 2008
    Messages:
    1
    Likes Received:
    0
    Trophy Points:
    0
    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

  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice