php请求cookie不用curl,PHP 使用 CURL 不依赖 COOKIEJAR 获取 COOKIE 的方法

4fd78ce75aed

php.jpg

使用 COOKIEJAR 方法

PHP 中 CURL 类在做请求时非常好用,对于COOKIE,CURL类也有很不错的支持。

获得 COOKIE 并存为文件:

// 把 COOKIE 保存至 cookie.txt

curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');

// COOKIE 文件存放在至 temp 文件夹下的随机文件

$cookie_file = tempnam('./temp','cookie');

curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);

读取文件并携带 COOKIE:

curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');

先把 COOKIE 保存文件,调用的时候再读取文件。

使用正则表达式

使用 COOKIEJAR 方法,会有两次 IO 操作,对效率有一定的损失。且运行在 BAE/SAE/GAE 等云计算平台时,不支持本地文件写入。使用正则表达式可以解决这些问题。

获取 COOKIE 解析为文本:

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

// 获取头部信息

curl_setopt($ch, CURLOPT_HEADER, 1);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$content = curl_exec($ch);

curl_close($ch);

list($header, $body) = explode("\r\n\r\n", $content);

// 解析 COOKIE

preg_match("/Set-Cookie: (.*);/iU", $header, $matches);

$cookie = trim($matches[1]);

携带 COOKIE 文本提交:

curl_setopt($ch, CURLOPT_COOKIE, $cookie);

返回多条 COOKIE 时的正则表达式:

很多时候,网站不止返回了一条 COOKIE,此时使用上面的代码匹配时无法匹配到完整的 COOKIE。对此,需要使用 preg_match_all 来进行匹配,代码如下:

preg_match("/Set-Cookie: (.*);/iU", $header, $matches);

$cookies = implode('; ', $matches[1]);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值