2010-08-26 3 views
0

J'ai un client qui a besoin d'un site Web de toute urgence, mais je n'ai pas accès à des informations telles que le panneau de contrôle.Erreur d'analyse PHP dans la fonction d'analyse rss

version PHP est 4.4 qui est une douleur que je suis habitué à 5.

Le premier problème est que je continue à recevoir:

Parse error: parse error, unexpected T_OBJECT_OPERATOR, expecting ')' in D:\hshome\*******\********\includes\functions.php on line 37 

C'est la fonction en question:

function read_rss($display=0,$url='') { 
    $doc = new DOMDocument(); 
    $doc->load($url); 
    $itemArr = array(); 

    foreach ($doc->getElementsByTagName('item') as $node) { 
     if ($display == 0) { 
      break; 
     } 

     $itemRSS = array(
      'title'=>$node->getElementsByTagName('title')->item(0)->nodeValue, 
      'description'=>$node->getElementsByTagName('description')->item(0)->nodeValue, 
      'link'=>$node->getElementsByTagName('link')->item(0)->nodeValue); 

     array_push($itemArr, $itemRSS); 

     $display--; 
    } 
    return $itemArr; 
} 

Et la ligne en question:

'title'=>$node->getElementsByTagName('title')->item(0)->nodeValue, 
+0

Veuillez scinder vos deux questions en deux questions. Il n'y a pas de pénurie imminente dans la base de données;) et il est peu probable que quelqu'un répondra à vos deux questions. – Piskvor

Répondre

2

PHP4 ne supporte pas le déréférencement d'objets. Donc $obj->something()->something ne fonctionnera pas. Vous devez faire $tmp = $obj->something(); $tmp->something ...

0

Vous ne pouvez pas le faire en PHP 4.

faire quelque chose comme

$nodes = $node->getElementsByTagName('title'); 
    $item = $nodes->item(0); 
    $value = $item->nodeValue, 

Essayez et cela fonctionnera.

0

Vous ne pouvez pas chaîner les appels d'objet en PHP 4. Vous allez devoir faire chaque appel séparément à une variable et stocker tout cela.

$titleobj = $node->getElementsByTagName('title'); 
$itemobj = $titleobj->item(0); 
$value = $itemobj->nodeValue; 

... 

'title'=>$value, 

vous devrez le faire sur tous ces appels enchaînées

En ce qui concerne .htaccess ... vous avez besoin de parler à quelqu'un qui contrôle le serveur réel. Il semble que .htaccess ne soit pas autorisé à modifier le paramètre que vous essayez de modifier.

0

Vous devez décomposer cette ligne en variables individuelles. PHP 4 n'aime pas -> les parenthèses suivantes. Pour ce faire, à la place:

$title = $node->getElementsByTagName('title'); 
    $title = $title->item(0); 
    $description = $node->getElementsByTagName('description'); 
    $description = $description->item(0); 
    $link = $node->getElementsByTagName('link'); 
    $link = $link->item(0); 

    $itemRSS = array(
     'title'=>$title->nodeValue, 
     'description'=>$description->nodeValue, 
     'link'=>$link->nodeValue); 

Les deux déclarations variables pour chaque peuvent être redondants et condensés, je ne suis pas sûr de savoir comment PHP4 répondra. Vous pouvez essayer de les condenser si vous le souhaitez.

0

DOMDocument est la fonction php 5. Vous ne pouvez pas l'utiliser. vous devrez peut-être utiliser les fonctions DOM XML (PHP 4)