PHP 5.5.15 is released

fgetc

(PHP 4, PHP 5)

fgetcDosya tanıtıcısından bir karakter döndürür

Açıklama

string fgetc ( resource $dt )

Belirtilen dosya tanıtıcısından bir karakter döndürür.

Değiştirgeler

dt

Dosya tanıtıcısı geçerli olmalı ve fopen() veya fsockopen() tarafından başarıyla açılmış bir dosya için döndürülmüş olmalıdır (ve henüz fclose() tarafından kapatılmamış olmalıdır).

Dönen Değerler

Dosya tanıtıcısı dt ile belirtilen bir dosyadan tek bir karakter içeren bir dizge döndürür. Dosya sonuna gelindiğinde FALSE döndürür.

Uyarı

Bu işlev mantıksal FALSE değeriyle dönebileceği gibi FALSE olarak değerlendirilebilecek mantıksal olmayan bir değerle de dönebilir. Bu konuda daha fazla bilgi edinmek için Mantıksal Değerler bölümüne bakabilirsiniz. Bu işlevden dönen değeri sınamak için === işlecini kullanınız.

Örnekler

Örnek 1 - fgetc() örneği

<?php
$dt 
fopen('birdosya.txt''r');
if (!
$dt) {
    echo 
'birdosya.txt dosyası açılamadı';
}
while (
false !== ($kar fgetc($dt))) {
    echo 
"$kar\n";
}
?>

Notlar

Bilginize: Bu işlev ikil dosyalarla çalışırken dosya içeriğini değiştirmez.

Ayrıca Bakınız

  • fread() - Dosyayı ikil kipte okur
  • fopen() - Bir dosya veya URL'yi açar
  • popen() - Bir süreç tanıtıcısı açar
  • fsockopen() - Bir internet veya Unix alan soketi bağlantısı açar
  • fgets() - Dosya tanıtıcısından bir satır döndürür

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
10 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