我在一个小型 cronjob 上使用 fsockopen 来读取和解析不同服务器上的提要。在过去,这非常有效。然而在某些服务器上,我在响应中得到了非常奇怪的行,如下所示:
<语言>zh</语言> <sy:updatePeriod>每小时</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> 11 <项目> <标题> 1f 2010 年 7 月 8 日</title> <链接> 32 http://darkencomic.com/?p=2406</link> <评论> 3e
但是当我在例如记事本++中打开提要时,它工作得很好,显示:
<语言>zh</语言> <sy:updatePeriod>每小时</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <项目> <title>2010 年 7 月 8 日</title> <link>http://darkencomic.com/?p=2406</link> <评论>
...只是为了显示摘录。那么,我在这里做错了什么还是超出了我的控制范围?我很感激任何解决这个问题的想法。这是我用来检索提要的部分代码:
$fp = @fsockopen($url["host"], 80, $errno, $errstr, 5); 如果 (!$fp) { throw new UrlException("($errno) $errstr ~~~ on opening ".$url["host"]." "); } 别的 { $out = "GET ".$path." HTTP/1.1\r\n" ."主机:".$url["主机"]。"\r\n" ."连接:关闭\r\n\r\n"; fwrite($fp, $out); $内容 = ''; 而 (!feof($fp)) { $contents .= stream_get_contents($fp,128); } fclose($fp);