0

谢谢你花时间帮我看这个。

背景:我正在为个人理财项目处理 OFX/QFX 文件。我用 C# 编写了代码,它执行得很好。我能够创建我的导入对象,逐行处理 OFX/QFX 文件并将前面提到的对象输出到控制台。但是,我将其移植到 PHP 以用于未在 .Net Framework 上编写的 Web 应用程序。

问题:一个文件由用户上传并传递给我的 PHP 文件。使用逐行读取文件时,$line = fgets($file);我没有得到预期的结果。我知道文件已打开并且正在读取该行。然而; 当我var_dump($line)在分配变量后立即输入 "string(15) "ENG ""时,我应该得到的是:

<LANGUAGE>ENG

我的处理模型很大程度上依赖于读取字符串标记部分的能力,但是因为 PHP 似乎正在剥离它,所以我的代码没有按预期执行。

问题:谁能告诉我为什么我在使用 fgets() 时没有收到完整的字符串值?还有更正确的方法可以做到这一点吗?我对 .Net 非常了解,但 PHP 对我来说有点新,所以我假设这只是我不理解的 PHP 语言的一个怪癖。

谢谢

4

3 回答 3

3

问题是<LANGUAGE>被浏览器解析,被认为是无效的 HTML 标记并被忽略。

右键单击浏览器中的查看源代码以查看实际输出。

于 2012-02-13T22:51:34.563 回答
0

正如您在 var_dump() 结果中看到的那样,它是一个 15 字符长的字符串。您的问题可能是<LANGUAGE>标签没有显示,而是“那里”。

尝试htmlspecialchars($line);改用。但我通常推荐使用 var_dump(),因为它非常清楚地显示了变量值的类型和长度。

于 2012-02-13T22:52:29.233 回答
0

我冒昧地猜测<LANGUAGE>ENG您是否期望将其输出到屏幕上,那么它可能就是。您的网络浏览器将看到并尝试将其解析为标签,并且仅显示与该标签相关联的数据,而不是标签本身。不是PHP的问题。尝试使用 pre 标签回显该行

echo '<pre>' . $line . '</pre>';
于 2012-02-13T22:53:27.587 回答