0

在我的桌面上安装了 Windows 8 并重新安装了 aptana 和 xampp 后,我不知何故无法使用 !feof($handle)。我想获取存储在我的 $symb arra 中的 nasdaq 符号。这是一个示例,我的错误:

$symb = array();
$url = "http://www.nasdaq.com/screening/companies-by-name.aspx?letter=0&exchange=nasdaq&render=download";
$handle = fopen("$url","r");
while( !feof($handle) ){
    $line = fgetcsv($handle, 1024);
    if($line!="Symbol" && isset($line[0]) && $line[0] != null   ){
        $symb[] = trim($line[0]);
    }
    fclose($handle);
}

还有我的错误:

警告:feof(): 3 不是第 61 行 C:\xampp\htdocs\demos\screener\candleScreener.php 中的有效流资源

警告:fgetcsv(): 3 不是第 62 行 C:\xampp\htdocs\demos\screener\candleScreener.php 中的有效流资源

警告:fclose(): 3 在第 66 行的 C:\xampp\htdocs\demos\screener\candleScreener.php 中不是有效的流资源......

是否有我必须在 php.ini 文件上更改的设置或者它可能是什么?谢谢。

    .....
$url = "http://www.nasdaq.com/screening/companies-by-name.aspx?letter=0&exchange=nasdaq&render=download";
$handle = fopen("$url","r");
$txt = fread( $handle, 8 );
print_r($txt);
    .....

打印出:“符号”

所以我的 fopen() 很好....

4

2 回答 2

14

重新安装fopen()是红鲱鱼。while在读取文件之前,您正在关闭循环内的文件句柄。

while( !feof($handle) ){
    $line = fgetcsv($handle, 1024);
    if($line!="Symbol" && isset($line[0]) && $line[0] != null   ){
        $symb[] = trim($line[0]);
    }
    // fclose($handle); // Move this outside the while loop
}
fclose($handle); // Moved this outside the while loop
于 2013-07-14T11:44:29.673 回答
0

我的代码中有同样的问题。我在代码中有一个额外的文件关闭功能。换句话说,我试图第二次写入文件并且它没有打开使用。我在程序的顶部对此进行了编码:

$newFile = $local_directory . $tenant.'-'.$namespace.'_Stats.xml';
$newDoc = fopen($newFile, "w");
fwrite($newDoc, $urlStats);
fwrite($newDoc, $response);
fclose($newDoc);

后来我有:

fwrite($newDoc, $response);
fclose($newDoc);

在写入更多内容之前检查以确保文件已打开。

于 2019-01-08T17:08:40.477 回答