У меня есть следующий код:
$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_get_contents» не решает проблему. Любое предложение будет очень признательно. p.s. PHP версии 5.3.1
ОБНОВЛЕНИЕ: проблема заключалась в спецификации UTF-8. См. решение ниже. Спасибо всем за помощь!