Как я могу заставить сценарий PHP добавить вкладку к каждой строке включать файла?

В моем 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 продолжает удалять их, когда я форматирую документ.

7
задан hakre 13 August 2012 в 11:43
поделиться

3 ответа

В вашем файле 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, как предлагается по комментарию

6
ответ дан 7 December 2019 в 07:48
поделиться

Я не думаю, что ваше решение можно легко решить. Вы можете рассмотреть возможность использования HTML Tidy для очистки исходного кода перед его представлением клиенту. В Интернете есть хороших руководств по нему.

1
ответ дан 7 December 2019 в 07:48
поделиться

Самое простое решение - добавить ведущие табуляции в включаемый файл, но вместо использования буквальных табуляций используйте escape-последовательность \ t .

0
ответ дан 7 December 2019 в 07:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: