1

首先我猜PHP中的“致命错误:超过最大执行时间”是服务器端错误,不应该取决于浏览器版本,对吧?不过好像有啊!?!

我有这段代码来读取来自表单中文本区域的 csv 数据。

$handle = tmpfile();
fwrite($handle, $csvclip);
fseek($handle, 0);
while (!feof($handle)) {
   $r = fgetcsv($handle, 1000, $delimiter, '"'); <---- Here it gives Fatal Error
   print $r[0];
}

而数据就是这样,没什么特别的,4列3行。

a   b   1   2
c   d   3   4
e   f   5   6

代码适用于所有浏览器(IE、Chrome 等),我可以看到除 Firefox 之外的解析数据!!!!!!我在不同的 PC 上进行了测试,但相同。所有浏览器都可以,但 Firefox 为具有“fgetcsv”的行给出“致命错误:超出最大执行时间”

我正在使用 PHP 版本 5.2.10 和 2 个不同的 firefox 版本 3.5.16 和 3.6.6

以前有人见过这个问题吗?

编辑:代码在两台不同的 Linux 服务器 CentOS 5.3 和 5.5 上进行测试,使用两台具有所有浏览器的不同 PC。

编辑 2:已解决

好的,我发现了问题。$delimiter 值来自具有 3 个值的 "," ";" 和 "\t" 哪个浏览器将 "\t" 显示为空格,我没有注意它。

似乎 firefox 正在对 \t 做一些事情,所以 PHP 不明白它是选项卡。但其他浏览器按预期发送 \t 。

如果我像 fgetcsv($handle, 1000, "\t", '"') 对 "\t" 进行硬编码,也适用于 firefox。

第一次 Firefox 给我带来了这么多麻烦,而不是 IE :)

4

3 回答 3

2

将以下内容添加到脚本的顶部:

set_time_limit(0);

这应该禁用脚本运行的时间限制。

于 2011-02-18T11:22:36.057 回答
1

不确定这是否是问题所在,但请查看 Tom 在 2006 年 10 月 24 日 10:27 在feof() 页面上的评论

于 2011-02-18T11:47:20.403 回答
1

好的,我发现了问题。$delimiter 值来自具有 3 个值的 "," ";" 和 "\t" 哪个浏览器将 "\t" 显示为空格,我没有注意它。

似乎 firefox 正在对 \t 做一些事情,所以 PHP 不明白它是选项卡。但其他浏览器按预期发送 \t 。

如果我像 fgetcsv($handle, 1000, "\t", '"') 对 "\t" 进行硬编码,也适用于 firefox。

于 2011-04-01T13:34:35.407 回答