PHP 5.5.16 is released

fgetc

(PHP 4, PHP 5)

fgetcObtiene un carácter de un puntero a un archivo

Descripción

string fgetc ( resource $handle )

Obtiene un carácter desde un puntero a un archivo dado.

Parámetros

handle

El fichero al que se apunta debe ser válido, y debe apuntar a un fichero abierto por fopen() o fsockopen() (y que todavía no esté cerrado por fclose()).

Valores devueltos

Devuelve una cadena que contiene un sólo carácter leído desde el archivo apuntado por handle. Devuelve FALSE sobre EOF.

Advertencia

Esta función puede devolver el valor booleano FALSE, pero también puede devolver un valor no booleano que se evalúa como FALSE. Por favor lea la sección sobre Booleanos para más información. Use el operador === para comprobar el valor devuelto por esta función.

Ejemplos

Ejemplo #1 Un ejemplo de fgetc()

<?php
$fp 
fopen('archivo.txt''r');
if (!
$fp) {
    echo 
'No se pudo abrir archivo.txt';
}
while (
false !== ($carácter fgetc($fp))) {
    echo 
"$carácter\n";
}
?>

Notas

Nota: Esta función es segura binariamente.

Ver también

  • fread() - Lectura de un fichero en modo binario seguro
  • fopen() - Abre un fichero o una URL
  • popen() - Abre un proceso de un puntero a un fichero
  • fsockopen() - Abre una conexión vía sockets a Internet o a un dominio Unix
  • fgets() - Obtiene una línea desde el puntero a un fichero

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
11 months 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