以下是 PHP 中 fgetc() 函数的用法详解及示例,包含实际运行结果的演示:
1. 基础用法
从文件中逐字符读取并输出内容:
$file = fopen("demo.txt", "r");
if ($file) {
while (($char = fgetc($file)) !== false) {
echo $char;
}
fclose($file);
} else {
echo "文件打开失败!";
}假设 demo.txt 内容为 Hello,输出结果:
Hello
说明:
循环读取每个字符直到
EOF,!== false严格判断避免与空字符混淆文件指针会自动移动到下一个字符位置
2. 二进制文件处理
读取二进制文件并输出字节的十六进制值:
$file = fopen("binary.bin", "rb");
if ($file) {
while (($byte = fgetc($file)) !== false) {
echo bin2hex($byte) . " ";
}
fclose($file);
}假设 binary.bin 内容为 PNG 文件头,输出结果:
89 50 4e 47
说明:
使用
"rb"模式避免换行符转换问题bin2hex()将二进制字符转为十六进制表示
3. 用户输入交互
从标准输入(CLI)读取单个字符并响应:
echo "请输入一个字母(a/b/c):";
$input = fgetc(STDIN);
switch ($input) {
case 'a': echo "您选择了A选项"; break;
case 'b': echo "您选择了B选项"; break;
default: echo "输入无效";
}用户输入 b 时的输出结果:
您选择了B选项
说明:
STDIN是预定义的文件指针,指向标准输入流
4. 性能优化建议
对于大文件,应结合 fgets() 按行读取后再逐字符处理
$file = fopen("large.txt", "r");
if ($file) {
while (!feof($file)) {
$line = fgets($file);
for ($i = 0; $i < strlen($line); $i++) {
echo $line[$i]; // 处理每个字符
}
}
fclose($file);
}注意事项
返回值类型:必须用
!== false判断结束,避免0或空字符误判错误处理:文件打开失败时直接返回
false,需优先检查fopen()结果效率问题:逐字符读取大文件性能极低,推荐按行处理