powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / strlen выдаёт не то что ожидаю.
12 сообщений из 12, страница 1 из 1
strlen выдаёт не то что ожидаю.
    #39047301
nwstrlen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер. Вопрос, есть файл counter в нем текст: "Расс", функция strlen ($mytext1) выводит "11". Почему?
$fp = fopen("counter.txt", "r");
if ($fp)
{
while (!feof($fp))
{
$mytext = fgets($fp);
$mytext1.=$mytext;
}
echo $mytext1;
}
fclose($fp);
echo strlen ($mytext1);
...
Рейтинг: 0 / 0
strlen выдаёт не то что ожидаю.
    #39047313
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы-первых, strlen считает в байтах, а не в символах.
Во-вторых, в строке могут быть непечатные символы - пробелы, табуляции, переносы и т.п. Выведите переменную через var_dump.
...
Рейтинг: 0 / 0
strlen выдаёт не то что ожидаю.
    #39047323
nwstrlen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft, выводит string(11) "Расс"
...
Рейтинг: 0 / 0
strlen выдаёт не то что ожидаю.
    #39047339
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если вывести bin2hex($mytext1) ?
...
Рейтинг: 0 / 0
strlen выдаёт не то что ожидаю.
    #39047340
nwstrlen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft, efbbbfd0a0d0b0d181d181
...
Рейтинг: 0 / 0
strlen выдаёт не то что ожидаю.
    #39047342
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nwstrlen,

А в файле точно только одна строка? По факту вы хватаете длину последней строки. А там вполне могут быть какие-то пробелы.
...
Рейтинг: 0 / 0
strlen выдаёт не то что ожидаю.
    #39047344
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nwstrlen,

Похоже на юникод.
...
Рейтинг: 0 / 0
strlen выдаёт не то что ожидаю.
    #39047349
nwstrlen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DarkMaster, сейчас удалил из файла всё, открыл в notepad++ сохранил в utf8 без bom
выводит
string(8) "Расс"
d0a0d0b0d181d181
...
Рейтинг: 0 / 0
strlen выдаёт не то что ожидаю.
    #39047353
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nwstrlen,

На каждый символ в UTF-8,UTF16 и т.п. отводится не один байт, как ты ожидаешь, а несколько. Для UTF-8 - символ может занимать до 3 байт по максимуму (насколько помню). Вот тебе strlen() и отдает число БАЙТ, которое строка занимает.
...
Рейтинг: 0 / 0
strlen выдаёт не то что ожидаю.
    #39047354
nwstrlen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DarkMaster,

Как мне получить точное число символов?
...
Рейтинг: 0 / 0
strlen выдаёт не то что ожидаю.
    #39047355
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nwstrlen,

Есть еще mb_strlen() и iconv_strlen() - погугли в эту сторону.
...
Рейтинг: 0 / 0
strlen выдаёт не то что ожидаю.
    #39047358
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nwstrlenefbbbfd0a0d0b0d181d181 https://ru.wikipedia.org/wiki/UTF-8 В качестве BOM использует последовательность байт EF, BB, BF
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / strlen выдаёт не то что ожидаю.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]