summaryrefslogtreecommitdiff
path: root/program/lib/html2text.php
diff options
context:
space:
mode:
authoralecpl <alec@alec.pl>2008-08-29 08:40:21 +0000
committeralecpl <alec@alec.pl>2008-08-29 08:40:21 +0000
commit7353fab31669a0d2d6df7317afbce4c62b5f42ed (patch)
tree620db9afc4bef7d01feb5bc82a7c154ac24405f6 /program/lib/html2text.php
parent7f9d71bf1fb0f0589f328366984e30d342a08882 (diff)
- Added PRE handling in html2text class (#1484740)
Diffstat (limited to 'program/lib/html2text.php')
-rw-r--r--program/lib/html2text.php52
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>',
+ '&nbsp;&nbsp;&nbsp;&nbsp;',
+ '&nbsp;',
+ '',
+ ''
+ );
+
+ /**
* 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
+?>