Really boring HTML & XML tag class function for PHP

That’s right. It’s simple boring and reusable. I used it for the complex HTML need to make the WP Super Edit WordPress administration options. It’s actually a function, but I use it inside a PHP class when I know I’m going to be either doing nasty HTML echo’s or returning complex HTML formatted variables. It’s not a template system or anything like that, I just needed something without the massive dependencies and overhead of a full fledged HTML / Dom / Pear class.

I’ve put it into a simple class for this example, and you can download the text file in case my site mangles the code: Real Boring HTML & XML Class PHP Text File

Oh yea, and since a tag is a tag, then this can also do simple XML.

class boring_tag_creator {
 
  /**
  * Display or return html or xml tag with attributes.
  * @param array $tag_options options and content to display
  * @return mixed
  */
  function the_tag( $tag_options = array() ) {
 
    $attributes = '';
    $composite = '';
 
    foreach ( $tag_options as $name => $option ) {
      if ( $name == 'tag' ) continue;
      if ( $name == 'content' ) continue;
      if ( $name == 'return' ) continue;
      if ( $name == 'tag_type' ) continue;
      $tag_attributes .= sprintf( ' %s="%s"', $name, $option );
    }
 
    switch ( $tag_options['tag_type'] ) {
      case 'single':
        $format = '%3$s <%1$s%2$s />' ;
        break;
      case 'single-after':
        $format = '<%1$s%2$s /> %3$s' ;
        break;
      case 'open':
        $format = '<%1$s%2$s>%3$s';
        break;
      case 'close':
        $format = '%3$s</%1$s>';
        break;
      default:
        $format = '<%1$s%2$s>%3$s</%1$s>';
        break;
    }
 
    $composite = sprintf( $format, $tag_options['tag'], $tag_attributes, $tag_options['content'] );
 
    if ( $tag_options['return'] == true ) return $composite ;
 
    echo $composite;
  }
 
  /**
  * Boring Header and paragraph either echoed or returned...
  */
  function boring_html( $header, $content, $return = false ) {
 
    $the_h2 = array(
      'tag' => 'h2',
      'content' => $header
    );
 
    $the_content = array(
      'tag' => 'p',
      'id' => 'boring_content_id',
      'style' => 'border: 1px solid red',
      'class' => 'boring_content_class',
      'content' => $content
    );
 
    if ( $return ) {
      $the_h2[ 'return' ] = true;
      $the_content[ 'return' ] = true;
      return $this->the_tag( $the_h2 ) . $this->the_tag( $the_content );
    } else {
      $this->the_tag( $the_h2 );
      $this->the_tag( $the_content );    
    }
 
  } 
 
 
}
 
$boring = new boring_tag_creator;
 
$boring->boring_html( 'The Title', 'Some words about this for the content.' );
 
$boring_html_variable = $boring->boring_html( 'Another Title', 'More words about this other thing for the content.', true );
 
echo $boring_html_variable;

The class function the_tag takes an array. In that array there are only three special keys.

  • tag (the html or xml tag)
  • content (the content that goes somewhere with in or near the tag see tag_type)
  • return ( To return everything as a string set as true, or to echo set as false which is the default  )
  • tag_type ( controls how the tag is composed )
    • single ( put the content in front and self close the tag )
    • single-after ( put the content behind and self close the tag )
    • open ( create an open tag and put content after )
    • close ( close the tag )
    • default ( opened the tag, put the content, close the tag )

Whatever else you put as part of the array becomes an attribute for the tag. Simple, boring, and might be useful. Like I said, boring, but this has been useful for me to construct some complex HTML and XML structures.

One Response to “Really boring HTML & XML tag class function for PHP”

  1. Marat Dyatko says:

    Thanks!

    Your class will used by XAMP project for validating data, what incoming from user :-)

Leave a Reply

Your email is never shared. Required fields are marked *

*
*