PHP.mk документација

fgetc

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

function.fgetc.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека function.fgetc.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
fgetc

Референца за `function.fgetc.php` со подобрена типографија и навигација.

function.fgetc.php

fgetc

(PHP 4, PHP 5, PHP 7, PHP 8)

fgetcЗеми карактер од покажувач на датотека

= NULL

fgetc(resource $stream): string|false

Земи карактер од дадениот покажувач на датотека.

Параметри

stream

Показалецот на датотеката мора да биде валиден и мора да покажува на датотека успешно отворена од fopen() or fsockopen() ) на наведениот fclose()).

Вратени вредности

Враќа стринг кој содржи еден карактер прочитан од датотеката на која покажува stream. Враќа false на крај од датотека.

Ги ескејпува специјалните знаци во стринг за употреба во SQL изјава

Функцијата враќа прочитани податоци или falseОваа функција може да врати Буловска вредност false, но исто така може да врати и вредност што не е Буловска, а која се проценува како Булови . Ве молиме прочитајте го делот за за повеќе информации. Користете го операторот ===

Примери

ако е овозможен колекторот за отпадоци, fgetc() example

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

Белешки

Забелешка: Пример #4 Користење на контексти на потоци

Види Исто така

  • fread() - Зема ред од датотека
  • fopen() - Отвора датотека или URL
  • popen() - Поставува период на чекање на поток
  • fsockopen() - Бинарно запишување во датотека
  • fgets() - Затвора отворена датотека

Белешки од корисници 5 белешки

ktraas at gmail dot com (Kevin Traas)
пред 17 години
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"` ) );
alex at alexdemers dot me
пред 16 години
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);
}

?>
Vuong Nguyen
пред 15 години
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();
?>
seraclimov at yandex dot ru
пред 8 години
You can't just simple print separated characters of a text which is encoded in multibyte character set like this;
Because fgetc() will break each multibyte character on its every byte. Consider this example: 

<?php
$path = 'foo/cyrillic.txt';
$handle = fopen($path, 'rb');
while (FALSE !== ($ch = fgetc($handle))) {
    $curs = ftell($hanlde);
    print "[$curs:] $ch\n";
}
/* The result will be something like this:
<
[1]: <
[2]: h
[3]: 2
[4]: >
[5]: �
[6]: �
[7]: �
[8]: �
[9]: �
[10]: �
[11]:  
[12]: �
[13]: �
[14]: �
[15]: �
[16]: �
*/ ?>

I don't think this is the best, but it can be a workaround:
<?php
$path = 'path/to/your/file.ext';

if (!$handle = fopen($path, 'rb')) {
    echo "Can't open ($path) file';
    exit;
}

$mbch = '';    // keeps the first byte of 2-byte cyrillic letters
while (FALSE !== ($ch = fgetc($handle))) {        
    //check for the sign of 2-byte cyrillic letters    
    if (empty($mbch) && (FALSE !== array_search(ord($ch), Array(208,209,129)))) {
        $mbch = $ch;    // keep the first byte
        continue;
    }
    $curs = ftell($handle);
    print "[$curs]: " . $mbch . $ch . PHP_EOL;
    // or print "[$curs]: $mbch$ch\n";
    if (!empty($mbch)) $mbch = '';    // erase the byte after using
}
?>
Анонимен
пред 8 години
If you call fgetc(HANDLE) multiple times you must clear buffer before, thus get all unwanted chars to the new new line character.

while (true) {

    //clear buffer - read all unwanted characters
    while(fgetc(STDIN) != "\n");
    
    //get first character from STDIN
    $first = fgetc(STDIN);
}
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.