0

我有一个客户急需一个网站,但我无法访问控制面板等信息。

PHP 版本是 4.4,这对我来说很痛苦,因为我已经习惯了 5。

第一个问题是我不断得到:

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

这是有问题的功能:

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;
}

和有问题的行:

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

5 回答 5

2

PHP4 不支持对象取消引用。所以$obj->something()->something行不通。你需要做$tmp = $obj->something(); $tmp->something...

于 2010-08-26T16:58:10.553 回答
0

您需要将该行分解为单个变量。PHP 4 不喜欢 -> 后面的括号。改为这样做:

    $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);

每个变量的两个变量声明可能是多余的和精简的,我不确定 PHP4 将如何响应。如果需要,您可以尝试压缩它们。

于 2010-08-26T17:02:45.257 回答
0

DOMDocument is php 5 function.You cant use it. you may need to use DOM XML (PHP 4) Functions

于 2012-03-02T01:48:58.117 回答
0

您不能在 PHP 4 中链接对象调用。您将不得不分别对变量进行每个调用并将其全部存储。

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

...

'title'=>$value,

你必须在所有那些链式调用中这样做

至于 .htaccess ...您需要与控制实际服务器的人交谈。听起来 .htaccess 不允许更改您要更改的设置。

于 2010-08-26T16:59:24.250 回答
0

你不能在 PHP 4 中做到这一点。

必须做类似的事情

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

试试看,它会起作用的。

于 2010-08-26T16:57:50.960 回答