我有以下代码:
$array_test = array();
$file = file_get_contents ('./test.txt');
$file_array = explode("\n", $file);
foreach ($file_array as $line) {
$word = trim($line);
$array_test[] = $word;
}
echo $array_test[0];
if ($array_test[0] == "1") { echo 'first line'; }
echo $array_test[1];
if ($array_test[1] == "2") { echo 'second line'; }
print_r ($array_test);
test.txt 是以 UTF-8 编码的文件。它有 5 行。在每一行我都有一个数字:1 - 第一行,2 - 第二行,等等。
运行脚本的结果如下:
1
2
second line
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
)
如您所见,第一行存在问题。似乎它已正确添加到数组中,但不知何故,它的值与“1”不同。其他行没有问题,只有第一行。可以通过跳过第一行并开始将第二行的值添加到数组中来解决问题,但我只是想知道为什么它不像我写的那样工作?通常我在显示或阅读 UTF8 编码的文本或页面时没有任何问题。更改为“file”而不是“file_get_contents”并不能解决问题。任何建议将不胜感激。ps PHP 版本 5.3.1
更新:问题是 UTF-8 BOM。请参阅下面的解决方案。感谢大家的帮助!