php的file_get_contents()的高级用法

读取文件,读取网页,file_get_contents总是首选。既简单,又高效。

读取网页:

 $content = file_get_contents("http://imhuchao.com")

这里要说的是file_get_contents的一些”高级”的用法,平时大概用不上。

file_get_contents可以用来发送post请求,设定超时时间等等,不弱于curl。

函数说明是这样子的

string file_get_contents ( string $filename [, bool $use_include_path = false [, resource $context [, int $offset = -1 [, int $maxlen ]]]] )

其中第三个参数$context能够让file_get_content发送post请求,控制超时等功能

先看一个简单地例子,下面是一个发送post数据的示例,并且设定超时时间为5s

 //发送的post数据
$data = array("hello"=>"1");
// 创建contentxt流
$opts = array(
 'http'=>array(
 'method'=>"POST",
 'content'=>http_build_query($data),
 'timeout'=>'5'
 )
);

$context = stream_context_create($opts);


$file = file_get_contents('http://www.example.com', false, $context);
?>

http context的参数项

http的context有这么一些参数,根据这些组合能让file_get_contents不弱于curl

method (string)
远程服务器支持的 GET,POST 或其它 HTTP 方法。

默认值是 GET。
header (string)
请求期间发送的额外 header 。在此选项的值将覆盖其他值 (诸如 User-agent:, Host: 和 Authentication:)。
user_agent string
要发送的 header User-Agent: 的值。如果在上面的 header context 选项中没有指定 user-agent,此值将被使用。

默认使用 php.ini 中设置的 user_agent。
content (string)
在 header 后面要发送的额外数据。通常使用POST或PUT请求。
proxy (string)
URI 指定的代理服务器的地址。(e.g. tcp://proxy.example.com:5100).
request_fulluri (boolean)
当设置为 TRUE 时,在构建请求时将使用整个 URI 。(i.e. GET http://www.example.com/path/to/file.html HTTP/1.0)。 虽然这是一个非标准的请求格式,但某些代理服务器需要它。

默认值是 FALSE.
follow_location (integer)
跟随 Location header 的重定向。设置为 0 以禁用。

默认值是 1。
max_redirects (integer)
跟随重定向的最大次数。值为 1 或更少则意味不跟随重定向。

默认值是 20。
protocol_version float
HTTP 协议版本。

默认值是 1.0。

Note:

PHP 5.3.0 以前的版本没有实现分块传输解码。 如果此值设置为 1.1 ,与 1.1 的兼容将是你的责任。
timeout (float)
读取超时时间,单位为秒(s),用 float 指定(e.g. 10.5)。

默认使用 php.ini 中设置的 default_socket_timeout。
ignore_errors (boolean)
即使是故障状态码依然获取内容。

默认值为 FALSE.

附录

file_get_contents的参数

filename
要读取的文件的名称。
use_include_path
Note:

As of PHP 5 the FILE_USE_INCLUDE_PATH can be used to trigger include path search.
context
A valid context resource created with stream_context_create(). 如果你不需要自定义 context,可以用 NULL 来忽略。
offset
The offset where the reading starts on the original stream.

Seeking (offset) is not supported with remote files. Attempting to seek on non-local files may work with small offsets, but this is unpredictable because it works on the buffered stream.
maxlen
Maximum length of data read. The default is to read until end of file is reached. Note that this parameter is applied to the stream processed by the filters.

赞赏

微信赞赏支付宝赞赏

发表评论

电子邮件地址不会被公开。 必填项已用*标注