PHP: печать HTML-дружественного кода? - PullRequest
2 голосов
/ 01 марта 2010

Мне интересно, есть ли какой-нибудь способ сделать HTML-код хорошо выглядящим при печати этого HTML-кода (из нескольких строк) из функции PHP?

В частности, новые строки и вкладки. Очевидно, я хочу, чтобы закулисные теги HTML выглядели хорошо с соответствующими новыми строками и вкладками. Однако, в зависимости от того, когда я вызываю функцию PHP, которая печатает HTML, мне может потребоваться запустить вкладки в 1, 2, 3, 4 и т. Д. Я не хочу передавать счетчик начальных вкладок в PHP функция, которая печатает HTML.

Итак, кто-нибудь знает универсальный способ печати HTML-дружественного кода с помощью PHP? Или есть пропущенный мной принцип разработки, который гласит: «Не печатайте несколько строк HTML из функции PHP». ...

Спасибо

Steve

Ответы [ 5 ]

2 голосов
/ 01 марта 2010

Я бы не стал беспокоиться. Благодаря доступным инструментам для проверки DOM, таким как Firebug, нет смысла тратить время на то, чтобы сделать что-то предназначенное для компьютера, чтобы он выглядел хорошо. См. этот вопрос , чтобы узнать мнение других людей по этому вопросу.

1 голос
/ 01 марта 2010

если вы генерируете правильный xhtml, вы можете буферизовать ваш вывод и в конце сделать это:

$dom = new DomDocument (('1.0', 'utf-8');
$dom->loadHtml (ob_get_clean ());
$dom->formatOutput = true; 
echo $dom->saveXML ();

если вы используете фреймворк, вы, вероятно, можете сделать это плагином или фильтром. таким образом, это также работает, если вы встраиваете шаблон в другой шаблон или используете вывод helper

1 голос
/ 01 марта 2010

Очистка разметки

Есть несколько замечательных инструментальных кодов, которые будут очищать (т.е. корректировать интервал) и восстанавливать (т.е. закрывать открытые теги).

Tidy является одним из наиболее популярных инструментов очистки и восстановления html. Вы можете анализировать вывод вашего скрипта через Tidy на лету, используя выходные буферы php.

Введение в Zend Dev Zone - http://devzone.zend.com/article/761 Tidy Docs в PHP Manual - http://www.php.net/manual/en/book.tidy.php

А теперь, тривиальный пример, ууу!

<?php
ob_start();

echo '<div><b> messy</b> <div> <i>blarg</I></div>';
echo '  <div>code rawr!</div>';

$output = ob_get_clean();

$tidy = tidy_parse_string($output);
tidy_clean_repair($tidy);
echo $tidy;
?>

Система шаблонов

Вы должны использовать систему шаблонов для разделения логической (php-код) и презентационной (html / markup / etc) частей вашего приложения.

Использование этой практики имеет много преимуществ, в том числе упрощает поддержку и отладку кода.

Это огромная тема для обсуждения, и почти всегда она затрагивает фреймворки и MVC. Есть тысячи ресурсов, вот несколько: P

Написание системы шаблонов в PHP - http://www.codewalkers.com/c/a/Display-Tutorials/Writing-a-Template-System-in-PHP/
Отделение бизнес-логики от логики представления в веб-приложениях - http://www.paragoncorporation.com/ArticleDetail.aspx?ArticleID=21

0 голосов
/ 01 марта 2010

Вы не должны печатать HTML с php. Используйте сокращенный синтаксис php внутри шаблона.

<h1><?= $page_title ?></h1>
<p><?= page_content ?></p>

вместо

<?php

echo "<h1>" . $page_title . "</h1>";
echo "<p>" . $page_content . "</p>";

?>
0 голосов
/ 01 марта 2010

Создание HTML-кода с использованием системы шаблонов и поддержание порядка в шаблонах - простой способ сделать это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...