简体   繁体   中英

PHP: Printing HTML-Friendly Code?

I am wondering if there is any technique out there for making HTML code look good when printing that HTML (multiple lines) from a PHP function?

In particular, new lines and tabs. Obviously, I want the HTML tags behind-the-scenes to look good with the proper new lines and tabs. However, depending on when I call the PHP function that is printing the HTML, I might need to start the tabs at 1, 2, 3, 4, etc. I don't want to have to pass the starting tab count to the PHP function that is printing the HTML.

So, does anyone know a general-purpose way to print HTML-friendly code with PHP? Or is there a design principle that I am missing that says, "Don't print multiple HTML lines from a PHP function." ...

Thanks,

Steve

I wouldn't bother. With DOM-inspection tools like Firebug readily available, there's no point wasting time on making something designed for a computer to read look good. See this question for other people's opinions on the matter too.

Markup Cleanup

There are some wonderful codetools out there that will cleanup (ie, adjust spacing) and repair (ie, close open tags).

Tidy is one of the more popular html cleanup/repair tools. You can parse your script's output through Tidy on-the-fly using php's output buffers.

Zend Dev Zone Intro - http://devzone.zend.com/article/761 Tidy Docs in PHP Manual - http://www.php.net/manual/en/book.tidy.php

And now, a trivial example, yay!

<?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;
?>

Templating System

You should be using a templating system to separate the logic (php code) and presentation (html/markup/etc) parts of your application.

Using this practice has many advantages including, among other things, making your code easier to maintain and debug.

This is a huge topic of discussion, and almost always goes into frameworks and MVC. There are thousands of resources, here are a few :P

Writing a Template System in PHP - http://www.codewalkers.com/c/a/Display-Tutorials/Writing-a-Template-System-in-PHP/
Separation of Business Logic from Presentation Logic in Web Applications - http://www.paragoncorporation.com/ArticleDetail.aspx?ArticleID=21

if you're generating valid xhtml, you can buffer your output and at the end, do that:

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

if you're using a framework you can probably make this work as a plugin or filter. this way it's also work if you embed template into other template or use output from helper

使用模板系统生成HTML并保持模板井然有序是一种简单的方法

You shouldn't be printing html with php. Use php's shorthand syntax inside of a template.

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

instead of

<?php

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

?>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM