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

StackOverflow https://stackoverflow.com/questions/1417992

  •  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 .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top