Генерация HTML-кода функцией


//
// Функция генерации html-тега с поддержкой видимости
//
function Tag($array) {
    $result = '';
    if (isset($array['tag'])) {
        $tag = $array['tag'];
        unset($array['tag']);
        $inside = '';
        if (isset($array['inside'])) {
            $inside = $array['inside'];
            unset($array['inside']);
        }
        foreach($array as $k=>$v) {
            if ($k=='visible' && $v==false)
                return '';
            if ($v!='')
                $result .= sprintf(' %s="%s"',$k,$v);
        }
        $result = '<' . $tag . $result . '>';
        if (in_array($tag, array('HTML', 'HEAD',
            'BODY', 'TABLE', 'TR', 'HR', 'FORM',
            'SELECT', 'SCRIPT'))) $result.="n";
        $result .= is_array($inside)? Tag($inside) : $inside;
        if (!in_array($tag, array('INPUT', 'IMG',
            'HR', 'META', 'LINK'))) $result .= '</' . $tag . '>';
        if (!in_array($tag, array('HTML', 'HEAD',
             'BODY', 'TITLE', 'META', 'LINK', 'TR', 'TD',
            'HR', 'FORM', 'BR', 'OPTION'))) $result.="n";
    }
    return $result;
}

echo Tag(array(
    'tag'=>'DIV',
    'style'=>'border: 1px solid #000;',
    'inside' => Tag(array(
        'tag' => 'I',
        'inside' => 'First message',
    )). Tag(array(
        'tag' => 'U',
        'inside' => 'Second message',
        'visible' => false
    ))
));

* Такой же прием генерации HTML можно сделать с классами,
* но, несмотря на большую гибкость, они будут жрать больше памяти