SeVlad#: Ну спрашивает же человек. А меня так воспитывали - нужно отвечать на заданные вопросы.
Да, это пассивная агрессия в самом явном виде. Есть такой термин. Заметь - все со мной говорят нормально. Но ты через слово хамишь с самого начала, говоришь менторски и надменно. Это не спроста - это проблема. Но мне ни к чему брать на себя твои проблемы, на это есть соответствующие специалисты. Поэтому я и просил тебя где-то в начале темы мне не писать больше. Целостность файла, кодировки, вставка кода для чтения - всё это не имеет никакого отношения к сути проблемы и никоим образом не приближает её решение. Не надо выдавать мои "неответы" за причину того, что ты не заметил echo "<" и не мог сказать, что это вернёт пустую строку.
SeVlad#: Тебе не просто "подсказывали" - тебе инструкцию дали. Но ты же не слушаешь что говорят.
От тебя что ни слово - то пассивная агрессия. Ну да ладно. Покажи, пожалуйста, где и кто дал мне инструкцию или хотя бы подсказал. Мне кажется, ты ошибаешься - все инструкции и подсказки вели не туда. Кроме идеи от последнего человека, которому я за неё очень благодарен.
Результат выполнения смотрите в браузере? Ну так символ "<" и следующий за ним текст браузер интерпретирует как HTML тег <tag>.
Загляните в исходный код страницы.
Решил благодаря вам! Спасибо за подсказку! Да, открывающаяся < всё портит. Дело, конечно, в переменных, а не в выводе на экран. Но передаю-то я переменную посредством echo - тут-то я её и теряю! Поступил так: кодирую и только потом передаю -
echo base64_encode($itog);
А затем расшифровываю на javascript при помощи atob! И это я, товарищи, c минимальными знаниями php и javascript дошёл! Как же вы мне не подсказали? Один человек только понял, что это открывающийся тэг, и в нём проблема.
Результат выполнения смотрите в браузере? Ну так символ "<" и следующий за ним текст браузер интерпретирует как HTML тег <tag>.
Загляните в исходный код страницы.
Я не увидел - у меня пустой <body></body>... Но это и не важно, ведь дело не в выводе на экран, а в том, что этот стандартный символ не получает переменная. Я передаю её через ajax, а там то же, что и на экране - всё, что угодно, кроме этого символа.
temniy#: Вы читаете байты, а отбросить хотите символы. Не факт, что 1 символ занимает 1 байт. Считывайте целиком и отбрасывайте ненужное через substr, например.
Для строки 10000000000000000 0 D1<J попробовал $itog = substr(fread($f, 20), -2); На выходе - пусто...
Для строки 10000000000000000 0 D1zJ попробовал $itog=substr(fread($f,20),-2); На выходе - zJ
timo-71#: А пробел есть в конце? Иногда редакторы убирают лишние пробелы и табуляции.
Пробел есть. Размер не меняется. Думаю, дело не в редакторе. Вообще не понимаю, что происходит. Вот есть код:
<?php
$f = fopen(__DIR__."/pos.plr", "r");
fseek($f, -20, SEEK_END);
$itog = fread($f, 19);
fclose($f);
echo $itog;
?>
В нём я намеренно не читаю последний байт. И если есть строка 10000000000000000 0 D1<J (последний байт - J, но он может быть любым, как я понял), на выходе будет 0000000000000 0 D1, то есть без < А если вместо < написать, например, z (то есть, строка будет 10000000000000000 0 D1zJ), то на выходе всё будет как надо: 0000000000000 0 D1z Ну что это, если не чертовщина! А пробелы, как и всё остальное, я добавляю через fwrite.
Забей. А то прилетит.
Конечно прилетит. Вы все видели < и не знали, что нижеследующее даст через AJAX пустую строку - переменную без ничего.
Ну спрашивает же человек. А меня так воспитывали - нужно отвечать на заданные вопросы.
Да, это пассивная агрессия в самом явном виде. Есть такой термин. Заметь - все со мной говорят нормально. Но ты через слово хамишь с самого начала, говоришь менторски и надменно. Это не спроста - это проблема. Но мне ни к чему брать на себя твои проблемы, на это есть соответствующие специалисты. Поэтому я и просил тебя где-то в начале темы мне не писать больше. Целостность файла, кодировки, вставка кода для чтения - всё это не имеет никакого отношения к сути проблемы и никоим образом не приближает её решение. Не надо выдавать мои "неответы" за причину того, что ты не заметил echo "<" и не мог сказать, что это вернёт пустую строку.
Главное - отвечающих сразу с толку сбить, чтобы они полтемы разбирались с проблемой молотка.
Да, верно. Глупостей я наговорил немало. Что ж, прошу прощения. Всем спасибо за помощь.
Тебе не просто "подсказывали" - тебе инструкцию дали. Но ты же не слушаешь что говорят.
От тебя что ни слово - то пассивная агрессия. Ну да ладно. Покажи, пожалуйста, где и кто дал мне инструкцию или хотя бы подсказал. Мне кажется, ты ошибаешься - все инструкции и подсказки вели не туда. Кроме идеи от последнего человека, которому я за неё очень благодарен.
Результат выполнения смотрите в браузере? Ну так символ "<" и следующий за ним текст браузер интерпретирует как HTML тег <tag>.
Загляните в исходный код страницы.
Решил благодаря вам! Спасибо за подсказку!
Да, открывающаяся < всё портит. Дело, конечно, в переменных, а не в выводе на экран. Но передаю-то я переменную посредством echo - тут-то я её и теряю!
Поступил так: кодирую и только потом передаю -
А затем расшифровываю на javascript при помощи atob!
И это я, товарищи, c минимальными знаниями php и javascript дошёл! Как же вы мне не подсказали? Один человек только понял, что это открывающийся тэг, и в нём проблема.
Результат выполнения смотрите в браузере? Ну так символ "<" и следующий за ним текст браузер интерпретирует как HTML тег <tag>.
Загляните в исходный код страницы.
Я не увидел - у меня пустой <body></body>...
Но это и не важно, ведь дело не в выводе на экран, а в том, что этот стандартный символ не получает переменная. Я передаю её через ajax, а там то же, что и на экране - всё, что угодно, кроме этого символа.
абзац...
Вы читаете байты, а отбросить хотите символы. Не факт, что 1 символ занимает 1 байт. Считывайте целиком и отбрасывайте ненужное через substr, например.
Для строки
10000000000000000 0 D1<J
попробовал
$itog = substr(fread($f, 20), -2);
На выходе - пусто...
Для строки
10000000000000000 0 D1zJ
попробовал
$itog = substr(fread($f, 20), -2);
На выходе - zJ
Не работает...
А пробел есть в конце? Иногда редакторы убирают лишние пробелы и табуляции.
Пробел есть. Размер не меняется. Думаю, дело не в редакторе.
Вообще не понимаю, что происходит.
Вот есть код:
В нём я намеренно не читаю последний байт. И если есть строка 10000000000000000 0 D1<J (последний байт - J, но он может быть любым, как я понял), на выходе будет 0000000000000 0 D1, то есть без <
А если вместо < написать, например, z (то есть, строка будет 10000000000000000 0 D1zJ), то на выходе всё будет как надо: 0000000000000 0 D1z
Ну что это, если не чертовщина!
А пробелы, как и всё остальное, я добавляю через fwrite.
Если у вас не читает в конце пробел, то дело в чем-то другом.
Да, я его намеренно не читаю, я написал об этом в прошлом комментарии. Это я вас запутал, извините...