PHP file_get_contents 函数
最后修改于 2025 年 4 月 3 日
PHP 的 file_get_contents 函数将整个文件内容读取到一个字符串中。它是一种无需手动处理文件即可读取文件的简单方法。
基本定义
file_get_contents 函数读取文件并将其内容作为字符串返回。当启用 allow_url_fopen 时,它可以读取本地文件和 URL。
语法:file_get_contents(string $filename, bool $use_include_path = false, resource $context = null, int $offset = 0, int $maxlen = null): string|false。
基本的 file_get_contents 示例
这显示了 file_get_contents 读取文件的最简单用法。
<?php
declare(strict_types=1);
$content = file_get_contents('data.txt');
if ($content !== false) {
echo $content;
} else {
echo "Failed to read file";
}
这将 'data.txt' 的全部内容读取到一个字符串中。始终检查返回值,因为它在失败时返回 false。
读取远程内容
当 allow_url_fopen 开启时,file_get_contents 可以读取远程文件。
<?php
declare(strict_types=1);
$url = 'https://example.com/data.json';
$content = file_get_contents($url);
if ($content !== false) {
$data = json_decode($content, true);
print_r($data);
} else {
echo "Failed to fetch remote content";
}
这会从远程 URL 获取 JSON 数据并对其进行解码。请注意,由于网络问题或服务器限制,远程请求可能会失败。
使用上下文选项
上下文选项允许自定义文件读取行为。
<?php
declare(strict_types=1);
$opts = [
'http' => [
'method' => 'GET',
'header' => "User-Agent: MyCustomAgent\r\n"
]
];
$context = stream_context_create($opts);
$content = file_get_contents('https://example.com', false, $context);
if ($content !== false) {
echo substr($content, 0, 200);
}
这为 HTTP 请求设置了一个自定义 User-Agent 头。上下文选项对于添加头、超时或其他流行为很有用。
读取部分内容
该函数可以使用 offset 和 maxlen 参数读取文件的一部分。
<?php
declare(strict_types=1);
$filename = 'large_file.log';
$content = file_get_contents($filename, false, null, 100, 50);
if ($content !== false) {
echo "Read 50 bytes starting at position 100:\n";
echo $content;
}
这会从文件位置 100 开始读取 50 个字节。部分读取对于只需要特定部分的大文件很有用。
错误处理
正确处理错误对于处理文件操作至关重要。
<?php
declare(strict_types=1);
$filename = 'nonexistent.txt';
try {
$content = file_get_contents($filename);
if ($content === false) {
throw new RuntimeException("Failed to read file");
}
echo $content;
} catch (RuntimeException $e) {
error_log($e->getMessage());
echo "Error: " . $e->getMessage();
}
这演示了使用异常进行正确错误处理。在处理文件操作时,请始终处理潜在的故障。
最佳实践
- 错误处理: 始终检查 false 返回值。
- 内存使用: 避免一次性读取非常大的文件。
- 安全: 读取文件时,请验证输入路径。
- 性能: 考虑对经常读取的文件进行缓存。
- 远程内容: 为远程请求使用适当的超时设置。
来源
本教程通过实际示例展示了 PHP file_get_contents 函数在不同场景下的用法。
作者
列出 所有 PHP 文件系统函数。