PHP/File Directory/fgets

Материал из Web эксперт
Перейти к: навигация, поиск

Checking for an error from fopen(), fgets(), or fclose()

   <source lang="html4strict">

<? $fh = fopen("data.txt","rb"); if (! $fh) {

   print "Error opening people.txt: $php_errormsg";

} else {

   for ($line = fgets($fh); ! feof($fh); $line = fgets($fh)) {
       if ($line === false) {
           print "Error reading line: $php_errormsg";
       } else {
           $line = trim($line);
           $info = explode("|", $line);
print "
  • <a href="mailto:" . $info[0] . "">" . $info[1] ."
  • \n";
           }
       }
       if (! fclose($fh)) {
           print "Error closing people.txt: $php_errormsg";
       }
    

    } ?> //data.txt a@example.ru|Alice b@example.org|Bill c@example.ru|Charlie d@example.ru|Lewis

     </source>
       
      
    


    Counting paragraphs in a file

       <source lang="html4strict">
    
    

    <?php $paragraphs = 0; if ($fh = fopen("great-american-novel.txt","r")) {

     while (! feof($fh)) {
       $s = fgets($fh);
       if (("\n" == $s) || ("\r\n" == $s)) {
         $paragraphs++;
       }
     }
    

    } print $paragraphs; ?>

     </source>
       
      
    


    Counting records in a file

       <source lang="html4strict">
    
    

    <?php $records = 0; $record_separator = "--end--"; if ($fh = fopen("great-american-textfile-database.txt","r")) {

     while (! feof($fh)) {
       $s = rtrim(fgets($fh));
       if ($s == $record_separator) {
         $records++;
       }
     }
    

    } print $records; ?>

     </source>
       
      
    


    Creating and Using a File Class

       <source lang="html4strict">
    
    

    <?php // Copyright 2005, Lee Babin (lee@thecodeshoppe.ru) // This code may be used and redistributed without charge // under the terms of the GNU General Public // License version 2.0 or later -- www.gnu.org // Subject to the retention of this copyright // and GPL Notice in all copies or derived works

    class cfile {

       //The path to the file you want to work with. 
       protected $thepath; 
       
       
       //Error messages in the form of constants for ease of use. 
       const FOUNDERROR = "Sorry, the file in question does not exist."; 
       const PERMERROR = "Sorry, you do not have the proper permissions on this file"; 
       const OPENERROR = "Sorry, the file in question could not be opened."; 
       const CLOSEERROR = "Sorry, the file could not be closed."; 
       
       
       //The constructor function. 
       public function __construct (){ 
           $num_args = func_num_args(); 
           
           if($num_args > 0){ 
               $args = func_get_args(); 
               $this->thepath = $args[0]; 
           } 
       } 
    
       //A function to open the file. 
       private function openfile ($readorwrite){ 
       //First, ensure the file exists. 
       try { 
           if (file_exists ($this->thepath)){ 
               //Now, you need to see if you are reading or writing or both. 
               $proceed = false; 
               if ($readorwrite == "r"){ 
                   if (is_readable($this->thepath)){ 
                       $proceed = true; 
                   } 
               } elseif ($readorwrite == "w"){ 
                   if (is_writable($this->thepath)){ 
                       $proceed = true; 
                   } 
               } else { 
                   if (is_readable($this->thepath) && is_writable($this->thepath)){ 
                       $proceed = true; 
                   } 
               } 
               try { 
                   if ($proceed){ 
                       //You can now attempt to open the file. 
                       try { 
                           if ($filepointer = fopen ($this->thepath, $readorwrite)){ 
                               return $filepointer; 
                           } else { 
                               throw new exception (self::OPENERROR); 
                               return false; 
                           } 
                       } catch (exception $e) { 
                           echo $e->getmessage(); 
                       } 
                   } else { 
                       throw new exception (self::PERMERROR); 
                   } 
               } catch (exception $e) { 
                   echo $e->getmessage(); 
               } 
           } else { 
               throw new exception (self::FOUNDERROR); 
           } 
       } catch (exception $e) { 
           echo $e->getmessage(); 
       } 
       } 
       
       //A function to close a file. 
       function closefile () { 
       try { 
       if (!fclose ($this->thepath)){ 
       throw new exception (self::CLOSEERROR); 
       } 
       } catch (exception $e) { 
       echo $e->getmessage(); 
       } 
       } 
       
       //A function to read a file, then return the results of the read in a string. 
       
       public function read () { 
       //First, attempt to open the file. 
       $filepointer = $this->openfile ("r"); 
       
       //Now, return a string with the read data. 
       
       
       if ($filepointer != false){ 
       //Then you can read the file. 
       return fread ($filepointer,filesize ($this->thepath)); 
       
       } 
       
       //Lastly, close the file. 
       $this->closefile (); 
       } 
       
       
       //A function to write to a file. 
       
       public function write ($towrite) { 
       //First, attempt to open the file. 
       $filepointer = $this->openfile ("w"); 
       
       
       //Now, return a string with the read data. 
       
       if ($filepointer != false){ 
       //Then you can read the file. 
       return fwrite ($filepointer, $towrite); 
       
       
       } 
       
       //Lastly, close the file. 
       $this->closefile (); 
       } 
       
       
       //A function to append to a file. 
       
       public function append ($toappend) { 
       //First, attempt to open the file. 
       $filepointer = $this->openfile ("a"); 
       
       
       //Now, return a string with the read data. 
       
       if ($filepointer != false){ 
       //Then you can read the file. 
       return fwrite ($filepointer, $toappend); 
       
       
       } 
       
       //Lastly, close the file. 
       $this->closefile (); 
       } 
       
       
       //A function to set the path to a new file. 
       public function setpath ($newpath) { 
       $this->thepath = $newpath; 
       } 
       
    

    } ?>

    <?php //Include the class. require_once ("file.class.inc.php"); //Then create a new instance of the class. $myfile = new cfile ("data.txt"); //Now, let"s try reading it. echo $myfile->read();

    //Then let"s try writing to the file. $myfile->write ("Hello World!");

    //Then, let"s try appending. $myfile->append ("Hello Again!");

    ?>

     </source>
       
      
    


    fgets() function returns a string read from a file.

       <source lang="html4strict">
    
    

    Its syntax is: string fgets (int filepointer, int length) <? $fh = fopen("data.txt", "r"); while (! feof($fh)) :

        $line = fgets($fh, 4096);
        print $line."
    ";

    endwhile; fclose($fh); ?>

     </source>
       
      
    


    fgets.php

       <source lang="html4strict">
    
    

    <?php

      $fh = fopen("/home/www/data/users.txt", "rt");
      while (!feof($fh)) echo fgets($fh);
      fclose($fh);
    

    ?>

     </source>
       
      
    


    Processing a list of books

       <source lang="html4strict">
    
    

    <?php $fh = fopen("books.txt","r") or die("can"t open: $php_errormsg"); while (! feof($fh)) {

       $s = rtrim(fgets($fh));
       list($title,$author,$publication_year) = explode("|",$s);
    

    } fclose($fh) or die("can"t close: $php_errormsg"); ?>

     </source>
       
      
    


    Processing each word in a file

       <source lang="html4strict">
    
    

    <?php $fh = fopen("novel.txt","r") or die($php_errormsg); while (! feof($fh)) {

       if ($s = fgets($fh)) {
           $words = preg_split("/\s+/",$s,-1,PREG_SPLIT_NO_EMPTY);
       }
    

    } fclose($fh) or die($php_errormsg); ?>

     </source>
       
      
    


    Reading a compressed file

       <source lang="html4strict">
    
    

    <?php $fh = fopen("compress.zlib://lots-of-data.gz","r") or die("can"t open: $php_errormsg"); while ($line = fgets($fh)) {

       // $line is the next line of uncompressed data
    

    } fclose($fh) or die("can"t close: $php_errormsg"); ?>

     </source>
       
      
    


    Reading a file a line at a time

       <source lang="html4strict">
    
    

    <? $fh = fopen("people.txt","rb"); for ($line = fgets($fh); ! feof($fh); $line = fgets($fh)) {

       $line = trim($line);
       $info = explode("|", $line);
    
    print "
  • <a href="mailto:" . $info[0] . "">" . $info[1] ."
  • \n";

    } fclose($fh); ?> //people.txt a@example.ru|Alice b@example.org|Bill c@example.ru|Charlie d@example.ru|Lewis

     </source>