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

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

Ответы [ 3 ]

6 голосов
/ 13 сентября 2009

В вашем файле test.inc вы можете использовать буферизацию вывода для захвата всех выходных данных скрипта PHP перед его отправкой в ​​браузер. Затем вы можете выполнить последующую обработку, чтобы добавить нужные вкладки и отправить их дальше. Вверху файла добавьте

<?php
  ob_start();
?>

В конце добавить

<?php
  $result = ob_get_contents();
  ob_end_clean();
  print str_replace("\t" . $result, "\n", "\n\t");
?>

Я не обязательно подписываюсь на это решение - оно может занимать много памяти, в зависимости от вашего вывода, и не позволит вашему включаемому файлу отправлять частичные результаты клиенту во время его работы. Возможно, вам лучше переформатировать вывод или использовать некоторую форму пользовательской оболочки «print», которая отображает элементы (и использовать печать heredocs для постоянного вывода HTML).

Редактировать: использовать str_replace, как предложено в комментарии

1 голос
/ 13 сентября 2009

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

0 голосов
/ 13 сентября 2009

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

...