PHP 5.4.36 Released

fgetc

(PHP 4, PHP 5)

fgetcPobiera znak ze wskaźnika pliku

Opis

string fgetc ( resource $uchwyt )

Pobiera znak ze wskaźnika pliku.

Parametry

uchwyt

Wskaźnik na plik musi być poprawny i musi wskazywać na plik pomyślnie otwarty przez funkcję fopen() lub fsockopen() (a jednocześnie nie zamknięty jeszcze przez fclose()).

Zwracane wartości

Zwraca łańcuch znaków zawierający pojedynczy znak odczytany z pliku wskazanego przez uchwyt. Zwraca FALSE lub EOF.

Ostrzeżenie

Ta funkcja może zwrócić Boolean FALSE, ale może też zwrócić wartość innego typu niż Boolean, która oznacza wartość FALSE, takie jak 0 lub "". Aby uzyskać więcej informacji proszę zapoznać się z rozdziałem Typy logiczne. Można używać operatora === do testowania zwracanych wartości przez tę funkcję.

Przykłady

Przykład #1 Przykład fgetc()

<?php
$fp 
fopen('plik.txt''r');
if (!
$fp) {
    echo 
'Nie można otworzyć plik.txt';
}
while (
false !== ($char fgetc($fp))) {
    echo 
"$char\n";
}
?>

Notatki

Informacja: Ta funkcja jest bezpieczna dla danych binarnych.

Zobacz też:

  • fread() - Odczyt pliku binarnie bezpieczy
  • fopen() - Otwiera plik lub URL
  • popen() - Otwiera wskaźnik pliku do procesu
  • fsockopen() - Open Internet or Unix domain socket connection
  • fgets() - Pobiera linię ze wskaźnika pliku

add a note add a note

User Contributed Notes 4 notes

up
5
alex at alexdemers dot me
5 years ago
The best and simplest way to get input from a user in the CLI with only PHP is to use fgetc() function with the STDIN constant:

<?php

echo 'Are you sure you want to quit? (y/n) ';
$input = fgetc(STDIN);

if (
$input == 'y')
{
    exit(
0);
}

?>
up
3
ktraas at gmail dot com (Kevin Traas)
5 years ago
I was using command-line PHP to create an interactive script and wanted the user to enter just one character of input - in response a Yes/No question.  Had some trouble finding a way to do so using fgets(), fgetc(), various suggestions using readline(), popen(), etc.  Came up with the following that works quite nicely:

$ans = strtolower( trim( `bash -c "read -n 1 -t 10 ANS ; echo \\\$ANS"` ) );
up
1
spaceftp at legtux dot org
1 year ago
If you want to read a file and the fgets function doesn't work, you can try this function :
<?php
function read_file($file) {
    
$handle = fopen($file, "rb");
     if(
$handle) {
          while(!
feof($file)) {
               
$buffer = fgetc($file);
                echo
$buffer;
          }
     }
     else {
          echo
"ERROR : Could not open ".$file." !";
     }
}
?>

I've tried this function on 30-40 Ko's files.
up
-1
sfinktah at php dot spamtrak dot org
3 years ago
To read a single key-press in CLI mode, you can either use ncurses (which will probably require additional modules for PHP) or get nasty with the *nix "/bin/stty" command)

<?php
  
function stty($options) {
     
exec($cmd = "/bin/stty $options", $output, $el);
     
$el AND die("exec($cmd) failed");
      return
implode(" ", $output);
   }

   function
getchar($echo = false) {
     
$echo = $echo ? "" : "-echo";

     
# Get original settings
     
$stty_settings = preg_replace("#.*; ?#s", "", stty("--all"));

     
# Set new ones
     
stty("cbreak $echo");

     
# Get characters until a PERIOD is typed, 
      # showing their hexidecimal ordinal values.
     
printf("> ");
      do {
        
printf("%02x ", ord($c = fgetc(STDIN)));
      } while (
$c != '.');

     
# Return settings
     
stty($stty_settings);
   }

  
getchar();
?>
To Top