php和WordPress中的array_slice()警告

时间:2009-05-22 02:19:54

标签: php wordpress

我写了这段代码:

function get_feed(){

 // Get RSS Feed(s)
include_once(ABSPATH . WPINC . '/rss.php');
$rss = fetch_rss('http://dorar.shamekh.ws/?feed=rss2');
$maxitems = 1;
$items = array_slice($rss->items, 0, $maxitems,false);
return $items;

}

作为WordPress插件的一部分,它在我的本地服务器上工作正常,但当我将其上传到我的博客时,我收到了消息:

  

警告:array_slice()   [function.array-slice]:第一个   参数应该是

中的数组

我本地主机上的php版本:5.2.6

我网站上的php版本:5.2.5

4 个答案:

答案 0 :(得分:1)

从文档中可以看出$rss->items应该已经是一个数组。我猜想RSS提取失败了。尝试:

if (is_array($rss->items)) {
   $items = array_slice($rss->items, 0, $maxitems,false);
} else { var_dump($rss->items); }

MagpieRSS结合dorar.shamekh.ws'(使用/配置)Apache 1.3.41导致了一种非常奇怪的行为:

“正常”HTTP请求:

GET /feed/ HTTP/1.0
Host: dorar.shamekh.ws   

MagpieRSS的要求:

GET /feed/ HTTP/1.0
User-Agent: MagpieRSS/0.72 (+http://magpierss.sf.net)
Host: dorar.shamekh.ws:80
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*

请注意不同的“主机”标头。当附加端口号时,如在MagpieRSS中,站点返回301:

HTTP/1.1 301 Moved Permanently
Date: Fri, 22 May 2009 02:45:03 GMT
Server: Apache/1.3.41 (Unix) PHP/5.2.5 mod_auth_passthrough/1.8 mod_log_bytes/1.2 mod_bwlimited/1.4 FrontPage/5.0.2.2635 mod_ssl/2.8.31 OpenSSL/0.9.7a
X-Powered-By: PHP/5.2.5
X-Pingback: http://dorar.shamekh.ws/xmlrpc.php
Last-Modified: Wed, 20 May 2009 22:03:05 GMT
ETag: "e591693fdf2d27ee7dae19e256db2f46"
Location: http://dorar.shamekh.ws/feed/
Connection: close
Content-Type: text/html

答案 1 :(得分:0)

首先将$ rss->项目作为数组投射:

function get_feed(){

 // Get RSS Feed(s)
include_once(ABSPATH . WPINC . '/rss.php');
$rss = fetch_rss('http://dorar.shamekh.ws/?feed=rss2');
$maxitems = 1;
$rss->items = (array) $rss->items;
$items = array_slice($rss->items, 0, $maxitems,false);
return $items;

}

答案 2 :(得分:0)

听起来我觉得当它试图获取RSS时它失败了。也许fetch_rss使用已针对URL禁用的file_get_contents。

由于某种原因,属性$ rss-> item由于某种原因不是数组。

答案 3 :(得分:0)

fetch_rss()它已被弃用。请参阅:http://codex.wordpress.org/Function_Reference/fetch_rss

您必须使用fetch_feed()