Как использовать функцию fopen() для открытия файла таким образом, чтобы маркеры «< >» сохранялись?

При загрузке текстового файла на сервер и его открытии с помощью функции fopen(), почему маркеры, заключенные в угловые скобки "<>", не отображаются на экране? Если я использую следующий код: 

<pre><code class="php">$readfilename = $_SERVER['DOCUMENT_ROOT'].'/upload/'.$newFileName;
$file = fopen($readfilename, "rt") or die("Unable to open file!");
echo fread($file,filesize($readfilename));
fclose($file);</code></pre>

то вывод получается следующим: <br/>
  • 10 марта 2025 г. 12:04
Ответы на вопрос 2
Для того чтобы при открытии файла с помощью функции `fopen()` и последующем его чтении с помощью `fread()` маркеры в угловых скобках `<...>` сохранялись и отображались корректно, вам нужно убедиться, что вы правильно обрабатываете вывод данных в вашем скрипте PHP.

Проблема, с которой вы столкнулись, может быть связана с тем, что данные выводятся непосредственно в браузер. Если вы выводите HTML-код, в котором есть маркеры `<...>`, браузер воспринимает их как HTML-теги и не отображает их как текст. Для того чтобы это исправить, вам следует использовать функцию `htmlspecialchars()` для экранирования специальных символов, чтобы они отображались в виде текста.

Вот как можно изменить ваш код, чтобы решить эту проблему:

```php
$readfilename = $_SERVER['DOCUMENT_ROOT'].'/upload/'.$newFileName;
$file = fopen($readfilename, "rt") or die("Unable to open file!");
$content = fread($file, filesize($readfilename));
fclose($file);

// Экранирование специальных символов для правильного отображения
echo nl2br(htmlspecialchars($content));
```

В этом коде:
- `htmlspecialchars($content)` преобразует специальные символы в экранированные. Например, `<` будет заменен на `&lt;`, а `>` — на `&gt;`.
- `nl2br($content)` добавляет HTML-теги `<br />` перед каждой новой строкой, чтобы сохранять форматирование.

Теперь, когда вы будете выводить содержимое файла, маркеры в угловых скобках будут отображаться верно, как текст, а не как HTML-теги.
Смотри <br/> <code class="php">file_get_contents()</code>
Похожие вопросы