The way I personally do it is a more or less triple seperation. Though I stray from it occasionally in places, I try not to.
Basically I build a skeleton HTML page, and get the idea of how I want things displayed.
Rather than insert any content inside of the display frame/table/page, I just stick in a little: <?php echo $content ?>
In my scripts that handle all the logic and parsing and mailing and blah blah, I use something like:
$content .= "stuff";
rather than:
echo "stuff";
This way I can do all sorts of things such as go back in an alter data, validate syntax, save the output, or whatever I want to do, very easily.
Then as the third part I just make a file where I type in all my content.
Include the content at the top of the logic file, and the html display at the bottom, and viola.
Quick, fast, dreadfully easy to maintain, and I like seperating logic, content, and display.