Treehouse: Grow your CSS skills. Land your dream job.

Last updated on:

HTML Tidy

function html_tidy( $input_html, $indent = "true", $no_body_tags = "true", $fix = "true" ) {
   ob_start(  );
   $tidy = new tidy;
   $config = array( 'indent' => $indent, 'output-xhtml' => true, 'wrap' => 200, 'clean' => $fix, 'show-body-only' => $no_body_tags );
   $tidy->parseString( $input_html, $config, 'utf8' );
   $tidy->cleanRepair(  );
   $input = $tidy;
   return $input;
}

Comments

  1. So, I’m thinking it would be cool to write the function html_print(); HTML print would basically be: function html_print($html){
    global $doc_html;
    $doc_html .= $html;
    }

    Then, at the end of the page, one could do echo html_tidy($doc_html); This would mean all the php generated html would be formatted nicely. Does that sound like a good idea to anyone else?

  2. Permalink to comment#

    The default function arguments would produce an error since tidy expects a boolean value, but you’re giving a string. The first line should be like so:

    function html_tidy( $input_html, $indent = TRUE,
                                                   $no_body_tags = TRUE, $fix = TRUE ) {

    Other than that, very good suggestion. :-)

  3. ghindows
    Permalink to comment#

    $function html_tidy( $input_file, $indent = true, $no_body_tags = false, $fix = true ) {
    $tidy = new tidy;
    //config is from http://tidy.sourceforge.net/docs/quickref.html
    $config = array( ‘indent’ => $indent,
    ‘output-html’ => true,
    ‘wrap-attributes’ => false,
    ‘wrap’ => 120,
    ‘show-body-only’ => $no_body_tags
    );
    $tidy->parseFile( $input_file, $config );
    $tidy->cleanRepair( );
    return tidy_get_output($tidy);
    }`

Leave a Comment

Posting Code

We highly encourage you to post problematic HTML/CSS/JavaScript over on CodePen and include the link in your post. It's much easier to see, understand, and help with when you do that.

Markdown is supported, so you can write inline code like `<div>this</div>` or multiline blocks of code in in triple backtick fences like this:

```
<script>
  function example() {
    element.innerHTML = "<div>code</div>";
  }
</script>
```