📜  php file_get_contents 跟随重定向 - PHP (1)

📅  最后修改于: 2023-12-03 15:33:28.919000             🧑  作者: Mango

PHP file_get_contents 跟随重定向

在 PHP 中,我们可以使用 file_get_contents() 函数来读取一个文件或网页的内容。但是如果该网站进行了重定向,我们无法获取到重定向后的内容。为了解决这个问题,我们需要在 file_get_contents() 中添加一个参数 stream_context_create(),并在该参数中设置 max_redirects 选项来开启跟随重定向。

代码示例

以下是一个简单的示例代码,用于演示如何使用 file_get_contents() 跟随重定向:

$url = 'http://www.example.com';
$options = [
    'http' => [
        'method' => 'GET',
        'follow_location' => 1,
        'max_redirects' => 10
    ]
];
$context = stream_context_create($options);
$content = file_get_contents($url, false, $context);
echo $content;

该代码中,我们首先指定了要读取的网页地址 $url。然后,我们定义了一个数组 $options,用于设置 file_get_contents() 的参数。在该数组中,我们指定了使用 GET 请求方式,并通过 follow_location 选项来开启跟随重定向。max_redirects 选项用于指定最大的重定向次数,这里我们设置为 10。最后,我们通过调用 stream_context_create() 函数来创建一个流上下文,用于向 file_get_contents() 函数传递参数。

最后,我们直接调用 file_get_contents() 函数,并将流上下文作为第三个参数传递进去。该函数最终会返回重定向后的网页内容,我们将其输出到屏幕上。

注意事项

在使用 file_get_contents() 函数跟随重定向时,需要注意以下事项:

  • 一定要开启流上下文中的 follow_location 选项,否则无法跟随重定向。
  • 需要注意重定向次数的设定,过多的重定向次数可能会导致死循环或出现其他异常。
  • 在进行 SSL 加密连接时,需要指定 https 选项并开启 SSL 验证。
参考链接