当我尝试使用php file_get_contents函数读取kat.cr的rss源时,我得到一些不可读的文本,但是当我用浏览器打开它时,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;
我很好奇他们是如何做的以及我能做些什么来克服这个问题。
不可读文字的一部分:
<ي]يrم6-?Oپي©™Ê,à7{»â€¢&amp;يؤe;éN¹\ S'HK \S¤-¤l+ے÷ùI“(إژzA5ةض;غ%K4 {qtqy½ùوa ^»¬nھ |ûٹSeه¤Jrصڈ1 q ^}sü§7uسlدزؤY¾²yفVu•يغWGG·Iس&amp; m&gt;,“j~ $ےzؤ(?zïج'²جٹم?!÷|حغ”;گ'Yس¢ï³{tر5Ò³sgYٹ.ں@
实际上,每当我打开链接时,都会出现一些不同的不可读文本。
答案 0 :(得分:5)
正如我在评论中提到的 - 返回的内容是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;
,但我没有,但此处的功能可以解决这个问题。
Process xlP = Process.Start("excel.exe");
int id = xlP.Id;
int hwnd = (int)Process.GetCurrentProcess().MainWindowHandle;
Excel.Application oExcelApp = (Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");
if(xlP.MainWindowTitle.Contains( oExcelApp.ActiveWorkbook.Name) )
{
//Proceed further
}