mor*_*Tie 1 php rss file-get-contents
当我尝试使用php file_get_contents函数读取kat.cr的rss feed时,我得到了一些不可读的文本但是当我用浏览器打开它时,feed很好.
我尝试了很多其他主机但没有机会获得正确的数据.
我甚至尝试将用户代理设置为不同的浏览器,但仍然没有变化.
这是一个我尝试过的简单代码:
$options = array('http' => array('user_agent' => 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1'));
$url = 'https://kat.cr/movies/?rss=1';
$data = file_get_contents($url, FILE_TEXT, stream_context_create($options));
echo $data;
Run Code Online (Sandbox Code Playgroud)
我很好奇他们是如何做的以及我能做些什么来克服这个问题.
不可读文本的一部分:
<ي]يřم6-öپي©™ت,A7 {»AGW&يؤé;éN¹\ S'HK \S¤-¤l+ے÷ùI"(إژzA5ةض;غ%K4 {qtqy½ùو一个^»¬nھ|ûٹ发Eه¤Ĵřصڈ1个Q ^}sü§7uس升دزؤŸ¾²Ÿف武•يغWGG·我س&M>,"J〜$ےžؤ(ZIج'²جٹم÷|حغ?!";گ'Ÿس¢ï³【Tر5ز³SGYٹ.ں@
实际上,每当我打开链接时,都会出现一些不同的不可读文本.
正如我在评论中提到的 - 返回的内容是gzip编码的,因此您需要取消gzip数据.根据您的PHP版本,您可能已gzdecode安装或未安装,但我没有,但此处的功能可以解决问题.
if( !function_exists('gzdecode') ){
function gzdecode( $data ){
$g=tempnam('/tmp','ff');
@file_put_contents( $g, $data );
ob_start();
readgzfile($g);
$d=ob_get_clean();
unlink($g);
return $d;
}
}
$data=gzdecode( file_get_contents( $url ) );
echo $data;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
376 次 |
| 最近记录: |