*/
/**
* 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>/'
+ );
+
+ /**
+ * List of pattern replacements corresponding to patterns searched for PRE body.
+ *
+ * @var array $pre_replace
+ * @access public
+ * @see $pre_search
+ */
+ $pre_replace = array(
+ '
',
+ ' ',
+ ' ',
+ '',
+ ''
+ );
+
/**
* Contains a list of HTML tags to allow in the resulting text.
*
@@ -375,6 +407,9 @@ class html2text
$text = trim(stripslashes($this->html));
+ // Convert
+ $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>/ismU', $text, $matches))
+ {
+ $result = preg_replace($this->pre_search, $this->pre_replace, $matches[1]);
+ $text = preg_replace('/]*>.*<\/pre>/ismU', '
' . $result . '
', $text);
+ }
+ }
}
-?>
\ No newline at end of file
+?>