Может ли PHP анализировать или определять текущий уровень отступа тега в исходном документе?

#php #introspection #pragma #indentation

#php #самоанализ #pragma #отступ

Вопрос:

Для тех из нас, кто все еще внедряет PHP в структуру HTML, есть ли способ проанализировать уровень отступа (в исходном коде) текущего оцениваемого PHP-оператора / тега?

Рассмотрим следующий блок:

 <html>
    <body>
        <div class="nav">
            <?php insert_nav_menu() ?>
        </div>
    </body>
</html>

<?php
    function insert_nav_menu(){
        $current_indent_level = {get current indent level of tag in source};
        $indent = ( $current_indent_level ) ? str_repeat( "t", $current_indent_level ) : '';

        echo "{$indent}<p>Insert nav menu here...</p>n";
    }
?>
 

Существует ли какой-либо известный метод прагмы или самоанализа, который покажет что-либо о строке, в которой был выполнен вызов функции, чтобы HTML, сгенерированный функцией PHP, при просмотре в исходном коде браузера отображал последовательный отступ?

Комментарии:

1. Вы можете использовать обработчик HTML-tidy после того, как PHP выдал HTML… Выполнение таких действий имеет дополнительное преимущество, позволяющее вам минимизировать HTML-код после того, как вы закончите его отладку, просто переключив переключатель.

2. @Borealid — интересный подход, который я никогда не рассматривал. Не могли бы вы немного расшириться? У меня нет опыта постобработки HTML-кода, сгенерированного PHP.

3. обычно это делается с помощью чего-то вроде механизма шаблонов Smarty, но это не обязательно. Сначала вы включаете буферизацию вывода, затем применяете tidier (PHP имеет встроенное расширение HTML Tidy) перед сбросом буфера пользователю. Теоретически это можно было бы сделать потоковым с ограниченным прогнозом.

4. Вы когда-нибудь случайно разбирались в этом вопросе?

Ответ №1:

Как упоминал @Borealid, я бы посмотрел на постобработку с использованием PHP: Tidy — http://www.php.net/manual/en/tidy.examples.basic.php

Ответ №2:

Чтобы вы знали, PHP ничего не знает о HTML.
Так же, как и SQL. Или JS.
Для PHP это всего лишь строки, не имеющие особого значения.
Это работа программиста, а не программы.

Если вы хотите узнать уровень отступа, вы должны его посчитать.

И постобработка, о которой здесь все говорят, вам не поможет.