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

Я полагаю, что существует два связанного использования канонических: формы и экземпляры.

А каноническая форма средство, что значения конкретного типа ресурса могут быть описаны или представлены несколькими способами и одним из тех путей, выбрано в качестве привилегированной канонической формы. (Что форма , канонизировал , как книги, которые превратили ее в библию, и другие формы не.) Классическим примером канонической формы являются пути в иерархической файловой системе, где на единственный файл можно сослаться различными способами:

myFile.txt                                   # in current working dir
../conf/myFile.txt                           # relative to the CWD
/apps/tomcat/conf/myFile.txt                 # absolute path using symbolic links
/u1/local/apps/tomcat-5.5.1/conf/myFile.txt  # absolute path with no symlinks

классическим определением канонического представления того файла был бы последний путь. С локальными или относительными путями Вы не можете глобально определить ресурс без контекстной информации. С полными путями Вы можете определить ресурс, но не можете сказать, относятся ли два пути к тому же объекту. С двумя или больше путями, преобразованными в их канонические формы, можно сделать, все вышеупомянутое, плюс определяют, являются ли два ресурса тем же или нет, если это важно для приложения (решите проблема искажения ).

Примечание, что каноническая форма ресурса не является качеством той конкретной формы самой; может быть несколько возможных канонических форм для данного типа как пути к файлам (скажите, лексикографически в первую очередь, возможные полные пути). Одна форма просто выбрана как каноническая форма по конкретной причине приложения, или возможно произвольно так, чтобы все говорили на том же языке.

объекты Принуждения в их канонические экземпляры являются той же основной идеей, но вместо того, чтобы определить одно "лучшее" представление ресурса, она произвольно выбирает один экземпляр класса экземпляров с тем же "содержанием" как каноническая ссылка, затем преобразовывает все ссылки на эквивалентные объекты использовать один канонический экземпляр.

Это может использоваться в качестве техники для оптимизации обоих времени и пространства. Если существует несколько экземпляров эквивалентных объектов в приложении, то, вынуждая их всех быть разрешенными как единственный канонический экземпляр конкретного значения, можно устранить все кроме одного из каждого значения, оставив свободное место и возможно время, так как можно теперь сравнить те значения со ссылочными идентификационными данными (==) в противоположность объектной эквивалентности (equals() метод).

классический пример А оптимизации производительности с каноническими экземплярами сворачивает строки с тем же содержанием. Вызов String.intern() на двух строках с той же последовательностью символов, как гарантируют, возвратит тот же канонический Строковый объект для того текста. При передаче всех строк через это canonicalizer Вы знаете, что эквивалентные строки являются ссылками на самом деле одинакового объекта, т.е. псевдонимами

, перечислимые типы в Java 5.0 + вынуждают все экземпляры конкретного перечисления значений использовать тот же канонический экземпляр в VM, даже если значение сериализируется и десериализовывается. Именно поэтому можно использовать if (day == Days.SUNDAY) безнаказанно в Java, если Days перечислимый тип. Выполнение этого для Ваших собственных классов, конечно, возможно, но заботится. Читайте Эффективный Java Josh Bloch для деталей и совета.

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
поделиться
Другие вопросы по тегам:

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