次のコードがあります。
$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 - 2 行目など。
スクリプトを実行した結果は次のとおりです。
1
2
second line
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
)
ご覧のとおり、最初の行に問題があります。正しく配列に追加されたようですが、なぜか値が「1」と異なっています。最初の行だけで、他の行には問題はありません。この問題は、最初の行をスキップして、2 行目の値を配列に追加し始めることで解決できますが、私が書いたように機能しないのはなぜだろうか? 通常、UTF8 でエンコードされたテキストやページの表示や読み取りに問題はありません。「file_get_contents」の代わりに「file」に変更しても問題は解決しません。どんな提案でも大歓迎です。ps PHP バージョン 5.3.1
更新:問題は UTF-8 BOM でした。以下の解決策を参照してください。みんな助けてくれてありがとう!