1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

php file manipulation

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

  1. martabau

    martabau New Member

    Dec 23, 2008
    Likes Received:
    Trophy Points:
    i have these 2 functions:
    Reading a Particular Line in a File
    $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)) {
    fclose($fh) or die($php_errormsg);
    print $s;
    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 */
        $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 */
        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