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

それぞれの2つの変数宣言は冗長で凝縮されている可能性があり、PHP4がどのように応答するかはわかりません。必要に応じて、それらを凝縮してみることができます。

于 2010-08-26T17:02:45.257 に答える
0

PHP4ではそれを行うことはできません。

次のようなことをしなければなりません

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

それを試してみてください、それはうまくいくでしょう。

于 2010-08-26T16:57:50.960 に答える
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

DOMDocumentはphp5関数です。使用できません。DOM XML(PHP 4)関数を使用する必要がある場合があります

于 2012-03-02T01:48:58.117 に答える