ZetCode

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 读取文件的最简单用法。

basic_file_get_contents.php
<?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 可以读取远程文件。

remote_content.php
<?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 数据并对其进行解码。请注意,由于网络问题或服务器限制,远程请求可能会失败。

使用上下文选项

上下文选项允许自定义文件读取行为。

context_options.php
<?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 参数读取文件的一部分。

partial_content.php
<?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 个字节。部分读取对于只需要特定部分的大文件很有用。

错误处理

正确处理错误对于处理文件操作至关重要。

error_handling.php
<?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();
}

这演示了使用异常进行正确错误处理。在处理文件操作时,请始终处理潜在的故障。

最佳实践

来源

PHP file_get_contents 文档

本教程通过实际示例展示了 PHP file_get_contents 函数在不同场景下的用法。

作者

我叫 Jan Bodnar,是一名充满热情的程序员,拥有丰富的编程经验。我自 2007 年以来一直撰写编程文章。迄今为止,我已撰写了 1400 多篇文章和 8 本电子书。我在教授编程方面拥有十多年的经验。

列出 所有 PHP 文件系统函数