PHP fgetc():从文件中读取一个字符

在对某一个字符进行查找、替换时,就需要有针对性地对某个字符进行读取,在 PHP 中可以使用 fgetc() 函数实现此功能。该函数语法格式如下:

fgetc(resource $handle)

其中参数 $handle 为使用 fopen() 或 fsockopen() 成功打开的文件资源。

fgetc() 函数可以返回一个包含有一个字符的字符串,该字符是从 $handle 指向的文件中得到。当碰到 EOF 时返回 FALSE。

注意:fgetc() 函数可能返回布尔值 FALSE,也可能返回等同于 FALSE 的非布尔值。所以应该使用 === 运算符来测试此函数的返回值。

另外,fgetc() 函数可安全用于二进制对象,但不适用于读取中文字符串,因为一个中文通常占用 2~3 个字符。

【示例】使用 fgetc() 函数逐个字符的读取文件中的内容并输出。
<?php
    header("Content-Type: text/html;charset=utf-8");    //设置字符编码
    $handle = fopen('./test.txt', 'r');                 //打开文件
    if (!$handle) {                                     //判断文件是否打开成功
        echo '文件打开失败!';
    }
    while (false !== ($char = fgetc($handle))) {        //循环读取文件内容
        echo $char;
    }
    fclose($handle);                                    //关闭文件
?>
代码中用到的 test.txt 文件中的内容如下图所示:

test.txt 文件中的内容
图:test.txt 文件中的内容

运行结果如下:

C语言中文网 http://c.biancheng.net/


推荐文章
数组的顺序存储(C语言版)

数组作为一种线性存储结构,对存储的数据通常只做查找和修改操作,因此数组结构的实现使用的是顺序存储结构。 要知道,对数组中存储的数据做插入和删除操作,算法的效率是很差的。 由于数组可以是多维的,而顺序

有损压缩格式有哪些

有损压缩是利用了人类对图像或声波中的某些频率成分不敏感的特性,允许压缩过程中损失一定的信息;虽然不能完全恢复原始数据,但是所损失的部分对理解原始图像的影响缩小,却换来了大得多的压缩比。有损压缩广泛应用

优先使用函数对象自定义STL算法规则

作为一门面向对象的编程语言,使用C++编写程序有一个缺点,即随着代码面向对象程度的提高,其执行效率反而会降低。例如,经实验证明几乎在所有情况下,直接操作一个double类型变量的执行效率,要比操作一个

数据库是什么?关系型数据库和非关系型数据库又是什么?

在学习数据库之前,应该先理解什么是数据。本节先介绍数据以及数据库的概念,再对关系型数据库和非关系型数据库的优缺点进行分析。 描述事物的符号称为数据。数据有多种表现形式,可以是数字,也可以是文字、图形

Linux Vim撤销和恢复撤销快捷键用法详解

使用Vim编辑文件内容时,经常会有如下2种需求: 对文件内容做了修改之后,却发现整个修改过程是错误或者没有必要的,想将文件恢复到修改之前的样子。 将文件内容恢复之后,经过仔细考虑,又感觉还是刚才

OpenCV包含的模块以及组成结构

OpenCV是由很多模块组成的,这些模块可以分成很多层: 最底层是基于硬件加速层(HAL)的各种硬件优化。 再上一层是opencv_contrib模块所包含的OpenCV由其他开发人员所贡献的代

jQuery one()方法绑定事件(仅触发一次)

在jQuery中,我们可以使用one()方法为元素添加一个“只触发一次”的事件。 语法: $().one(type,fn) type是必选参数,它是一个字符串,表示事件类型。fn也是必选参数,表示

gmmktime() intgmmktime([int$hour[,int$minute[,int$second[,int$month[,int$day[,int$year[,int$is_dst]

一名合格的程序员需要具备哪些技能?

程序世界是一片广阔的大地,相比我十多年前进入这个世界时,这片大地的边界又扩大了很多倍。初入程序世界难免迷茫,要在这个世界立足、生存,并得到很好的发展,应首要具备怎样的技能呢?未来的程序之路,先给自己准

setbuf与setvbuf函数,C语言setbuf与setvbuf函数详解

在讨论setvbuf与setbuf函数之前,先来看如下一段示例代码: intmain(void) { FILE*fp=NULL; intfd; constchar*f1="testfpri

Servlet HttpSessionListener监听器统计网站在线人数

Servlet 1.创建监听器 packagecom.mengma.listener; importjavax.servlet.ServletContext; importjavax.ser

JSP Exception.getMessage()方法:获取异常消息文本

该方法获取异常消息文本。 语法: getMessage() 返回值:异常对象的消息字符串。 示例 在首页面产生异常,在error.jsp页面显示该异常的消息字符串。 首先在首页面产生异常,关键

数据库设计分为哪几个阶段?

数据库设计分为六个阶段按照规范的设计方法,一个完成的数据库设计一般分为以下六个阶段:1、需求分析:分析用户的需求,包括数据、功能和性能需求;2、概念结构设计:主要采用E-R模型进行设计,包括画E-R图

PHP Session的工作原理和存储机制

Session是通过一个名为PHPSESSID的Cookie来和服务器取得联系的,Session通过sessionID(PHPSESSID的值)来找到对应服务器中Session的文件名。 sessi

JS创建对象(3种方式)

在JavaScript中创建对象的方式有3种,简单介绍如下。 构造对象 使用new运算符调用构造函数,可以构造一个实例对象。具体用法如下: varobjectName=newfunctionNa

for循环及其注意事项,C语言使用for循环的注意事项总结

C语言for循环语句的一般形式为: for(;;) {    循环体语句; } 一般情况下,初始化总是一个赋值语句,它用来为循环控制变量赋初值;条件表达式则是一个关系表达式,它决定什么时候退出循环;

什么叫数据?

数据是指对客观事件进行记录并可以鉴别的符号,是对客观事物的性质、状态以及相互关系等进行记载的物理符号或这些物理符号的组合。它是可识别的、抽象的符号。它不仅指狭义上的数字,还可以是具有一定意义的文字、字

boot mode什么意思?

bootmode的意思为“启动方式”,有两种启动方式:UEFI和Legacysupport。bootmode的设置方法如下:1、按下电脑开机键,然后连续不停的按键盘的F2按键进入到bios的界面(不同

ssm和springboot的区别是什么?

Springboot是什么?谈springboot之前,咱们要先说一下传统的SSM开发,使用过SSM开发的人都会发现,传统的SSM框架项目会有大量的配置文件,需要手动的区整合三个框架,也就是sprin

hibernate.default_schema=属性值Java 示例 mrsoft hibernate.default_schema=mrsoft