Filesystem 函数
在线手册:中文  英文

fgetc

(PHP 4, PHP 5)

fgetc从文件指针中读取字符

说明

string fgetc ( resource $handle )

从文件句柄中获取一个字符。

参数

handle

文件指针必须是有效的,必须指向由 fopen()fsockopen() 成功打开的文件(并还未由 fclose() 关闭)。

返回值

返回一个包含有一个字符的字符串,该字符从 handle 指向的文件中得到。 碰到 EOF 则返回 FALSE

Warning

此函数可能返回布尔值 FALSE,但也可能返回等同于 FALSE 的非布尔值。请阅读 布尔类型章节以获取更多信息。应使用 === 运算符来测试此函数的返回值。

范例

Example #1 一个 fgetc() 例子

<?php
$fp 
fopen('somefile.txt''r');
if (!
$fp) {
    echo 
'Could not open file somefile.txt';
}
while (
false !== ($char fgetc($fp))) {
    echo 
"$char\n";
}
?>

注释

Note: 此函数可安全用于二进制对象。

参见


Filesystem 函数
在线手册:中文  英文

用户评论:

sfinktah at php dot spamtrak dot org (2011-03-22 06:33:12)

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();
?>

alex at alexdemers dot me (2009-05-11 10:30:50)

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);
}

?>

ktraas at gmail dot com (Kevin Traas) (2009-03-23 19:08:47)

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"` ) );

易百教程