【问题标题】:fgetcsv results are different on local and server run?fgetcsv 结果在本地和服务器运行时不同?
【发布时间】:2011-11-12 09:41:55
【问题描述】:

我使用fgetcsv() 从 csv 文件中提取一些数据。代码如下:

<?php
$csv = fopen("csv/contracts.csv","r");
while(!feof($csv)){
    $line = fgetcsv($csv,1024);
    if($line[0] == '')
        continue;
?>
    <li><?php echo "$line[2] - $line[3]"; ?></li>
<?php
}
?>

这在我的本地机器上运行良好,但是当我将它上传到我的服务器上时它变成了一场灾难!我将$delimiter"," 传递给fgetcsv(),但没有任何改变!
怎么了?
PHP 版本:
在本地:5.3.5
在服务器上:5.2.17

[编辑]
我的本地输出是这样的:

s1 - t1
s2 - t2
s3 - t3
s4 - t4

但是在服务器上:

-
-
s3 - 
s4 -

【问题讨论】:

  • 请定义“灾难”——到底出了什么问题?
  • 只是一个想法:连字符可能被视为减法运算符。你试过这个:&lt;?php echo $line[2] . ' - ' . $line[3]; ?&gt;
  • 我试过了。没运气。还是谢谢
  • 它也可能与行尾有关(特别是,如果您在本地使用 Windows 并将其上传到 linux 服务器)。看看这个:stackoverflow.com/q/2321064/690897 和一些相关的帖子,也许你会在那里找到一些东西。另一个常见问题似乎是 CSV 中的 \"
  • 嗯...不错的猜测。我添加了ini_set('auto_detect_line_endings',TRUE);,但没有解决问题。我还在服务器上使用 cPanel 查看了我的 csv 文件。好像没事!

标签: php csv fgetcsv


【解决方案1】:

我想你在 windows 机器上本地测试了代码,服务是 linux。 linux和windows中的文件格式不同。 linux 与 windows 的行尾以及其他一些不同之处。 您是否在 linux 中测试您的代码(因为您的服务器是 linux),然后在服务器中尝试。 我认为它会在那里工作得很好......

【讨论】:

    猜你喜欢
    • 2015-04-30
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    • 2015-06-12
    • 1970-01-01
    • 1970-01-01
    • 2018-01-31
    相关资源
    最近更新 更多