@gfan

PHP: strlen и первая строка из файла

В цикле считываю слова построчно, вот часть кода
$word = file("word.txt");

$word = str_replace("\r\n", "", $word);
echo "===".strlen($word);


Дело в том, что strlen неправильно определяет количество символов первого слова в word.txt
Там идет слово, состоящее из 8 символов, но strlen пишет 11. Со вторым словом во второй строке(и со всеми остальными) все отображается верно. Что такое находится в txt файле в самом начале, какой-то символ перед первым словом? Из-за чего эта проблема? В notepad++ включаю отображение всех символов, в начале нет ничего.
  • Вопрос задан
  • 2784 просмотра
Решения вопроса 1
BOM-последовательность? Кодировка какая выставлена? Notepad++ позволяет управлять ею достаточно точно. Выставляйте «UTF-8 без BOM».

Код для выпиливания BOM из строки:
$bom = pack("CCC", 0xef, 0xbb, 0xbf);
if (0 === strncmp($str, $bom, 3)) {
    echo "BOM detected - file is UTF-8\n";
    $str = substr($str, 3);
}
(взято отсюда)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы