- Added PRE handling in html2text class (#1484740)

release-0.6
alecpl 16 years ago
parent 7f9d71bf1f
commit 7353fab316

@ -31,6 +31,7 @@
* * * *
*************************************************************************/ *************************************************************************/
/* 2008/08/29: Added PRE handling by A.L.E.C <alec@alec.pl> */
/** /**
* Takes HTML and converts it to formatted, plain text. * Takes HTML and converts it to formatted, plain text.
@ -198,6 +199,37 @@ class html2text
'' ''
); );
/**
* List of preg* regular expression patterns to search for in PRE body,
* used in conjunction with $pre_replace.
*
* @var array $pre_search
* @access public
* @see $pre_replace
*/
$pre_search = array(
"/\n/",
"/\t/",
'/ /',
'/<pre[^>]*>/',
'/<\/pre>/'
);
/**
* List of pattern replacements corresponding to patterns searched for PRE body.
*
* @var array $pre_replace
* @access public
* @see $pre_search
*/
$pre_replace = array(
'<br>',
'&nbsp;&nbsp;&nbsp;&nbsp;',
'&nbsp;',
'',
''
);
/** /**
* Contains a list of HTML tags to allow in the resulting text. * Contains a list of HTML tags to allow in the resulting text.
* *
@ -375,6 +407,9 @@ class html2text
$text = trim(stripslashes($this->html)); $text = trim(stripslashes($this->html));
// Convert <PRE>
$this->_convert_pre($text);
// Run our defined search-and-replace // Run our defined search-and-replace
$text = preg_replace($this->search, $this->replace, $text); $text = preg_replace($this->search, $this->replace, $text);
@ -444,6 +479,21 @@ class html2text
return $display . ' [' . ($index+1) . ']'; return $display . ' [' . ($index+1) . ']';
} }
/**
* Helper function for PRE body conversion.
*
* @param string HTML content
* @access private
*/
function _convert_pre(&$text)
{
while(preg_match('/<pre[^>]*>(.*)<\/pre>/ismU', $text, $matches))
{
$result = preg_replace($this->pre_search, $this->pre_replace, $matches[1]);
$text = preg_replace('/<pre[^>]*>.*<\/pre>/ismU', '<div><br>' . $result . '<br></div>', $text);
}
}
} }
?> ?>

Loading…
Cancel
Save