PHP | fgetc 函数

怎样读取一个字符,避免中文出现乱码

最近更新时间 2020-12-31 15:12:28

fgetc 函数从文件指针中读取字符。

fgetc() 函数返回值为一个字符,直到 EOF 则返回 false,判断是否 EOF 应该使用 === 运算符来测试。

函数定义

fgetc ( resource $handle ) : string
// 源文件位于:ext/standard/file.c
# 函数定义

PHPAPI PHP_FUNCTION(fgetc)
{
  ...
  result = php_stream_getc(stream);

  if (result == EOF) {
    RETVAL_FALSE;
  } else {
    buf[0] = result;
    buf[1] = '\0';

    RETURN_STRINGL(buf, 1);
  }
}

参数

  • checkhandle -文件指针。文件指针必须有效,并且是通过 fopen() 或 fsockopen() 函数成功打开的文件(并还未由 fclose() 关闭)。

返回值

  • checkbool - 返回一个包含有一个字符的字符串,该字符从 handle 指向的文件中得到。直到 EOF 则返回 false。

示例1: - 使用 fgetc() 函数从文件指针中读取字符。

<?php
/**
 * PHP 使用 fgetc() 函数从文件指针中读取字符。
 *
 * @since Version 1.0.0
 * @filesource
 */

// 打开文件
$fp = fopen('foo.txt', 'r');

// 判断文件是否读取成功
if(!$fp) exit(0);

// 读取文件
while( false !== ($char = fgetc($fp))) {
  echo $char.PHP_EOL;
}

// 关闭文件
fclose($fp);

fgetc() 函数读取的是一个字符,如果中文是 UTF-8 编码,需要读取三次才是一个完整字符,否则会出现乱码。

rss_feed