Как я могу заставить php-скрипт добавлять вкладку в каждую строку включаемого файла?
-
07-07-2019 - |
Вопрос
В моем HTML есть скрипт php, который включает в себя файл. На тот момент в коде с отступом 2 вкладки. Я хотел бы, чтобы скрипт php добавил две вкладки в каждую строку. Вот пример:
Главная страница:
<body>
<div>
<?php include("test.inc"); ?>
</div>
</body>
И " test.inc "
<p>This is a test</p>
<div>
<p>This is a nested test</p>
<div>
<p>This is an more nested test</p>
</div>
</div>
Что я получу:
<body>
<div>
<p>This is a test</p>
<div>
<p>This is a nested test</p>
<div>
<p>This is an more nested test</p>
</div>
</div>
</div>
</body>
Что я хочу:
<body>
<div>
<p>This is a test</p>
<div>
<p>This is a nested test</p>
<div>
<p>This is an more nested test</p>
</div>
</div>
</div>
</body>
Я понимаю, что могу просто добавить ведущие вкладки во включаемый файл. Однако VS продолжает удалять их, когда я форматирую документ.
Решение
В своем файле test.inc вы можете использовать буферизацию вывода , чтобы захватить весь вывод скрипта PHP, прежде чем он будет отправлен в браузер. Затем вы можете выполнить последующую обработку, чтобы добавить нужные вкладки и отправить их дальше. Вверху файла добавьте
<?php
ob_start();
?>
В конце добавьте
<?php
$result = ob_get_contents();
ob_end_clean();
print str_replace("\t" . $result, "\n", "\n\t");
?>
Я не обязательно подписываюсь на это решение - оно может занимать много памяти, в зависимости от вашего вывода, и не позволит вашему включаемому файлу отправлять частичные результаты клиенту во время его работы. Возможно, вам лучше переформатировать вывод или использовать какую-либо форму " печати " обертка, которая вкладывает вещи > heredocs для постоянного вывода HTML).
Редактировать: использовать str_replace, как предложено в комментарии
Другие советы
Я не думаю, что ваше решение может быть легко принято. Вы можете использовать HTML Tidy для очистки исходного кода перед его представлением клиенту. Для этого в Интернете есть хорошие учебники .
Самое простое решение - добавить ведущие вкладки в файл включения, но вместо буквенных вкладок используйте escape-последовательность \ t
.