[英]How to use file_get_contents in php
我曾经使用PHP中的file_get_contents命令来抓取网站以获取信息。 尽管现在每次我尝试删除该网页时,它只会返回
<html><head><meta http-equiv="Refresh" content="0; URL=http://website.com/latest.php?ckattempt=1"></head><body></body></html>
这是我曾经使用过的代码
$opts = array(
'http'=>array(
'method'=>"GET",
'header'=>"Accept-language: en\r\n".
"Referer: ".$url."/index.php".
"Cookie: id=<id token>; auth=<auth token>;"
)
);
$context = stream_context_create($opts);
$html = file_get_contents($url.'/latest.php?ckattempt=0', false, $context);
我以为它与处理meta标记有关,但是有人知道我可以通过任何方式解决此问题,以便我再次删除该网页吗?
如果我正确解释了您的问题,那么您的问题就源于您通常在目标服务器上加载的站点已更改的事实。 现在,您正在加载的页面不是旧页面,而是使用meta
标记(称为meta refresh
)将客户端转发到另一个页面(在此特定示例中为http://website.com/latest.php?ckattempt=1
)。
您需要做的(为了获得想要读取的数据)可能就是跟随该链接,这意味着您应该加载该meta标记中提供的URL并从那里读取数据。
CURL可以跟随重定向,但是我不完全确定它将跟随一个meta标记,因为这是一种相当废止的转发方法,而且我不记得CURL花费了大量时间来解析传入的HTML代码(实际上根本没有) 。
万维网联盟(W3C)不鼓励使用元刷新
在给定情况下,最好的选择是解析传入的数据,挑选所需的信息(即URL),然后加载该URL。
您可以使用正则表达式执行此操作。 请参阅有关使用哪个正则表达式来检测字符串中的链接的问题 。
抽象步骤:
file_get_contents()
调用加载页面 refresh
的http-equiv
属性的meta
标记 file_get_contents()
以获得您想要的数据
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.