Задать вопрос
@gfan

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

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

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


Дело в том, что strlen неправильно определяет количество символов первого слова в word.txt
Там идет слово, состоящее из 8 символов, но strlen пишет 11. Со вторым словом во второй строке(и со всеми остальными) все отображается верно. Что такое находится в txt файле в самом начале, какой-то символ перед первым словом? Из-за чего эта проблема? В notepad++ включаю отображение всех символов, в начале нет ничего.
  • Вопрос задан
  • 2785 просмотров
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 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);
}
(взято отсюда)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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