Search code examples
phpiisfgets

How to correctly use the PHP function 'fgets'?


I assume I'm using the fgets() wrong. I'm tring to open a PHP file and then try to match a line in that file with a variable I create. If the line does match then I want to write/insert PHP code to the file right below that line. Example:

function remove_admin(){
    $findThis = '<tbody id="users" class="list:user user-list">';
    $handle = @fopen("../../fns-control/users.php", "r"); // Open file form read.

    if ($handle) {
        while (!feof($handle)) // Loop til end of file.
        {
            $buffer = fgets($handle, 479); // Read a line.
            if ($buffer == '<tbody id="users" class="list:user user-list">') // Check for string.
            {

Now I want to write PHP code to the file, starting on line 480. How can I do that?

Useful information may be: IIS 6 and PHP 5.2.


Solution

  • Try this:

    <?php
    function remove_admin(){
         $path = "../../fns-control/users.php";
         $findThis = '<tbody id="users" class="list:user user-list">';
         $phpCode = '<?php echo \'hello world\'; ?>';
    
         #Import file to string
         $f = file_get_contents($path);
    
         #Add in the PHP code
         $newfile = str_replace($findThis, $findThis . $phpCode, $f);
    
         #Overwrite the existing file
         $x = fopen($path, 'w');
         fwrite($x, $newfile);
         fclose($x);
     }