2009-05-22 13 views
0

Ich schrieb diesen Code:array_slice() Warnung in PHP und 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; 

} 

Als Teil eines Plugins für Wordpress, es funktioniert gut auf meinem lokalen Server, aber wenn ich es in meinem Blog lade ich bekommen die Meldung:

Warning: array_slice() [function.array-slice]: das erste Argument sollte in

ein Array PHP-Version auf meinem lokalen Rechner: 5.2.6

PHP-Version auf meiner Website: 5.2.5

+0

Was bei einem Fehler fetch_rss tun tut? Gibt es ein gültiges Objekt zurück? Ist $ rss-> ein Array, wenn es fehlschlägt? – jmucchiello

Antwort

1

Es scheint aus der Dokumentation, dass $rss->items sollte schon ein Array sein. Ich würde vermuten, dass der RSS-Abruf fehlschlägt. Versuchen:

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

MagpieRSS mit dorar.shamekh.ws kombiniert (Verwendung von/Konfiguration) Apache 1.3.41 ist auf ein sehr bizarres Verhalten führen:

Eine "normale" HTTP-Anforderung:

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

MagpieRSS Wunsch:

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, */* 

Beachten Sie die verschiedenen 'Host' Header. Wenn die Port-Nummer angehängt wird, wie in MagpieRSS, gibt die Website ein 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

Wenn ich versuche, die angegebene URL mit MagpieRSS lokal zu laden, bekomme ich: Warnung: MagpieRSS: konnte nicht abrufen http://dorar.shamekh.ws/?feed=rss2 (HTTP-Antwort: HTTP/1.1 301 Permanent verschoben – TML

+0

NULL ------------- – Waseem

+0

ja es funktioniert jetzt, ich ändere den RSS-Link und es funktioniert, aber ich bin immer noch schockiert, weil der alte RSS-Link in meinem funktioniert lokaler Server – Waseem

0

Was Gießen $ rss-> Artikel als Array zuerst:

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; 

} 
+0

hat es nicht funktioniert - – Waseem

0

Es klingt wie ich, dass, wenn es versucht, die RSS zu bekommen es ausfällt. Vielleicht verwendet fetch_rss file_get_contents, das für URLs deaktiviert wurde.

Entweder das, oder aus irgendeinem Grund, die Eigenschaft $ rss-> items ist aus irgendeinem Grund kein Array.