diff options
author | alecpl <alec@alec.pl> | 2008-08-29 08:40:21 +0000 |
---|---|---|
committer | alecpl <alec@alec.pl> | 2008-08-29 08:40:21 +0000 |
commit | 7353fab31669a0d2d6df7317afbce4c62b5f42ed (patch) | |
tree | 620db9afc4bef7d01feb5bc82a7c154ac24405f6 /program | |
parent | 7f9d71bf1fb0f0589f328366984e30d342a08882 (diff) |
- Added PRE handling in html2text class (#1484740)
Diffstat (limited to 'program')
-rw-r--r-- | program/lib/html2text.php | 52 |
1 files changed, 51 insertions, 1 deletions
diff --git a/program/lib/html2text.php b/program/lib/html2text.php index af8e936cc..c42a5359e 100644 --- a/program/lib/html2text.php +++ b/program/lib/html2text.php @@ -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. @@ -199,6 +200,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>', + ' ', + ' ', + '', + '' + ); + + /** * Contains a list of HTML tags to allow in the resulting text. * * @var string $allowed_tags @@ -375,6 +407,9 @@ class html2text $text = trim(stripslashes($this->html)); + // Convert <PRE> + $this->_convert_pre($text); + // Run our defined search-and-replace $text = preg_replace($this->search, $this->replace, $text); @@ -444,6 +479,21 @@ class html2text 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); + } + } } -?>
\ No newline at end of file +?> |