HTML

<p>blah <font style="color: red;">blah</font>
blah
blah blah</p>some<br/>text<p>aoefuklegfsrglkjhrg<br/>
asdg;luselkgu
s;djg;j</p><p>third aelg<b>yue</b>kgu</p>

<a href="http://pear.php.net">PEAR</a><br/>
<a href="http://pear.php.net">http://pear.php.net</a>

Browser Rendered

blah blah blah blah blah

some
text

aoefuklegfsrglkjhrg
asdg;luselkgu s;djg;j

third aelgyuekgu

PEAR
http://pear.php.net

Plaintext


blah blah blah blah blah

some
text

aoefuklegfsrglkjhrg
asdg;luselkgu s;djg;j

third aelgyuekgu

PEAR (http://pear.php.net)
http://pear.php.net

Source

<?php
$html 
'<p>blah <font style="color: red;">blah</font>
blah
blah blah</p>some<br/>text<p>aoefuklegfsrglkjhrg<br/>
asdg;luselkgu
s;djg;j</p><p>third aelg<b>yue</b>kgu</p>

<a href="http://pear.php.net">PEAR</a><br/>
<a href="http://pear.php.net">http://pear.php.net</a>'
;

$text preg_replace('/\s+/'' '$html);

$text preg_replace('!\s*(</?(p|br)>)\s*!''\1'$text);
$text str_replace(array('<p>''</p>''<br/>'), array("\n\n""\n\n""\n"), $text);
$text preg_replace('/\n{3,}/'"\n\n"$text);
function 
pregurl($matches) {
  if (
$matches[2] == $matches[3]) {
    return 
$matches[2];
  }
  return 
$matches[3].' ('.$matches[2].')';
}
$text preg_replace_callback('!<a\s+[^>]*\s*href=("|\'|)([^\1>]*)\1>(.*?)</a>!''pregurl'$text);
$text preg_replace('!</?[^>]+>!'''$text);
$text preg_replace('/[^\S\n]*\n[^\S\n]*/'"\n"$text);
echo 
'<h1>HTML</h1>
<pre>'
.htmlentities($html).'</pre>
<h1>Browser Rendered</h1>
'
.$html.'
<h1>Plaintext</h1>
<pre>'
.htmlentities($text).'</pre>
<h1>Source</h1>
'
;
highlight_file(__FILE__);

?>