mikuskov

Рейтинг
26
Регистрация
06.04.2021
webinfo #:

Забей. А то прилетит.

Конечно прилетит. Вы все видели < и не знали, что нижеследующее даст через AJAX пустую строку - переменную без ничего.

<?php
$itog = "<"
echo $itog;
?>
SeVlad #:
Ну спрашивает же человек.  А меня так воспитывали - нужно отвечать на заданные вопросы.

Да, это пассивная агрессия в самом явном виде. Есть такой термин. Заметь - все со мной говорят нормально. Но ты через слово хамишь с самого начала, говоришь менторски и надменно. Это не спроста - это проблема. Но мне ни к чему брать на себя твои проблемы, на это есть соответствующие специалисты. Поэтому я и просил тебя где-то в начале темы мне не писать больше. Целостность файла, кодировки, вставка кода для чтения - всё это не имеет никакого отношения к сути проблемы и никоим образом не приближает её решение. Не надо выдавать мои "неответы" за причину того, что ты не заметил echo "<" и не мог сказать, что это вернёт пустую строку.

webinfo #:
Главное - отвечающих сразу с толку сбить, чтобы они полтемы разбирались с проблемой молотка.

Да, верно. Глупостей я наговорил немало. Что ж, прошу прощения. Всем спасибо за помощь.

SeVlad #:
Тебе не просто "подсказывали" - тебе инструкцию дали. Но ты же не слушаешь что говорят.

От тебя что ни слово - то пассивная агрессия. Ну да ладно. Покажи, пожалуйста, где и кто дал мне инструкцию или хотя бы подсказал. Мне кажется, ты ошибаешься - все инструкции и подсказки вели не туда. Кроме идеи от последнего человека, которому я за неё очень благодарен.

jkm #:

Результат выполнения смотрите в браузере? Ну так символ "<" и следующий за ним текст браузер интерпретирует как HTML тег  <tag>.

Загляните в исходный код страницы.


Решил благодаря вам! Спасибо за подсказку!
Да, открывающаяся < всё портит. Дело, конечно, в переменных, а не в выводе на экран. Но передаю-то я переменную посредством echo - тут-то я её и теряю!
Поступил так: кодирую и только потом передаю - 

echo base64_encode($itog);


А затем расшифровываю на javascript при помощи atob!
И это я, товарищи, c минимальными знаниями php и javascript дошёл! Как же вы мне не подсказали? Один человек только понял, что это открывающийся тэг, и в нём проблема.

jkm #:

Результат выполнения смотрите в браузере? Ну так символ "<" и следующий за ним текст браузер интерпретирует как HTML тег  <tag>.

Загляните в исходный код страницы.


Я не увидел - у меня пустой <body></body>...
Но это и не важно, ведь дело не в выводе на экран, а в том, что этот стандартный символ не получает переменная. Я передаю её через ajax, а там то же, что и на экране - всё, что угодно, кроме этого символа.

fgetc тоже возвращает пустую строку при чтении символа <
абзац...
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.

Евгений Крупченко #:
Если у вас не читает в конце пробел, то дело в чем-то другом.

Да, я его намеренно не читаю, я написал об этом в прошлом комментарии. Это я вас запутал, извините...

1 234 5
Всего: 49