PHP版本号问题

时间:2013-08-31 09:08:39

标签: php html-parsing php-parse-error

我不确定为什么以下代码在PHP 5.2中显示错误消息,但它在php 5.4中完美运行

$f_channelList = array();
    $f_channelCounter = 0;
    $f_channel = null;
    foreach ($f_pageContent->find("div.col") as $f_channelSchedule){
        $f_channel = $f_channelSchedule->find("h2.logo")[0];//error here
        if(trim($f_channel->plaintext) != " " && strlen(trim($f_channel->plaintext))>0){
            if($f_channelCounter == 0){
                mkdir($folderName);
            }
            array_push($f_channelList, $f_channel->plaintext);
            $f_fileName = $folderName . "/" . trim($f_channelList[$f_channelCounter]) . ".txt";
            $f_programFile = fopen($f_fileName, "x");
            $f_fileContent = $f_channelSchedule->find("dl")[0]->outertext;
            fwrite($f_programFile, $f_fileContent);
            fclose($f_programFile);
            $f_channelCounter++;
        }
    }

另外,我在我的代码中使用simple_html_dom.php(html parser api)来解析html页面。当我在PHP 5.2上运行此代码时,它向我显示错误消息“//错误在这里”说明“在行号67处解析错误”

由于

2 个答案:

答案 0 :(得分:1)

你有:

$f_channel = $f_channelSchedule->find("h2.logo")[0]; 
                                                ^^^

数组解除引用是PHP 5.4+的功能,这就是您收到此错误的原因。如果您希望此代码适用于以前版本的PHP,则必须使用临时变量:

$temp = $f_channelSchedule->find("h2.logo");
$f_channel = $temp[0];

有关详细信息,请参阅PHP manual

答案 1 :(得分:1)

您无法访问php 5.2中的函数调用结果。

根据manual

  

从PHP 5.4开始,可以对a的结果进行数组解除引用   函数或方法直接调用。之前它只能使用一个   临时变量。