[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!

【超过500家企业部署】AWS搭建、运维、监控服务

【超过500家企业部署】AWS搭建、运维、监控服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

【CentOS的后继者】AlmaLinux OS服务器搭建/迁移服务

[仅适用于 WordPress] 云服务器“Web Speed”

[仅适用于 WordPress] 云服务器“Web Speed”

[便宜]网站安全自动诊断“快速扫描仪”

[便宜]网站安全自动诊断“快速扫描仪”

[预约系统开发] EDISONE定制开发服务

[预约系统开发] EDISONE定制开发服务

[注册100个URL 0日元] 网站监控服务“Appmill”

[注册100个URL 0日元] 网站监控服务“Appmill”

【兼容200多个国家】全球eSIM“超越SIM”

【兼容200多个国家】全球eSIM“超越SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”

【全球专属服务】Beyond北美及中国MSP

【全球专属服务】Beyond北美及中国MSP

[YouTube]超越官方频道“美由丸频道”

[YouTube]超越官方频道“美由丸频道”

如果你想用PHP访问API,file_get_contents还不够吗?

你好。
我是Mandai,负责Wild 开发团队。

你知道 PHP file_get_contents 方法吗?
我觉得这个方法很有用,因为文件打开过程可以写得简洁,而且这个方法除了读取文件之外,还可以作为一个简单的Web访问工具。
今天我想调查一下这个区域可以使用到什么程度的极限。

 

file_get_contents 的基础知识

举个简单的例子,要获取我们公司的首页,将使用以下来源。

<?php $html = file_get_contents('https://beyondjapan.com');


 我认为这不是问题。
如果这不起作用,请检查php.ini中的allow_url_fopen项是否如下。

允许 url_fopen = 开

 

file_get_contents的应用

file_get_contents 方法不仅能够获取 HTML。
接下来,尝试使用stream_context_create 方法发送POST。

如果您查看stream_context_create方法的手册,它只说“创建流上下文”。
通过操作此流上下文,您将能够发送 POST。

<?php $data = [ 'title' =>'发送测试', 'body' => '测试', ]; $opts = [ 'http' => [ 'method' => 'POST', 'header' => implode("\r\n", [ "用户代理:hogehoge","接受语言:ja","Cookie:test=hoge",]),],'data' => http_build_query($data) ]; $ctx = stream_context_create($opts); $response = file_get_contents('http://example.com/inquiry', false, $ctx);


 使用 http_build_query 进行 URL 编码并转换要通过 POST 发送的数据的查询字符串。
对于 JSON 数据,通过 json_encode 方法传递后,使用 urlencode 方法对其进行 URL 编码。

 

file_get_contents的真实值

您可以在流上下文中创建标头信息,因此如前面的示例所示,您也可以根据需要创建cookie!
您还可以突破基本身份验证并使用会话抓取网站。

它还兼容将 API KEY 嵌入标头信息的 API,例如 Chatwork API。

如果要使用SSL通信,则无需考虑;只需指定“https://”作为协议即可。

另外,这就是我想说的,这就是我写这篇博客的原因。

file_get_contents 即使在未安装 php-curl 的环境中也可以工作,因此它可以用作curl 库的替代品。
(当然,curl 的功能性更强是不言而喻的。)

 
就是这样。

如果您觉得这篇文章有帮助,请点赞!
2
加载中...
2 票,平均:1.00 / 12
15,089
X Facebook 哈特纳书签 口袋
[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

[2025.6.30 Amazon Linux 2 支持结束] Amazon Linux 服务器迁移解决方案

写这篇文章的人

关于作者

万代洋一

我的主要工作是为社交游戏开发 Web API,但我也很幸运能够做很多其他工作,包括营销。
此外,我在 Beyond 中的肖像权被视为 CC0。