--- /dev/null
+<?php\r
+class XML_HTMLSax3_Trim {\r
+ var $orig_obj;\r
+ var $orig_method;\r
+ function XML_HTMLSax3_Trim(&$orig_obj, $orig_method) {\r
+ $this->orig_obj =& $orig_obj;\r
+ $this->orig_method = $orig_method;\r
+ }\r
+ function trimData(&$parser, $data) {\r
+ $data = trim($data);\r
+ if ($data != '') {\r
+ $this->orig_obj->{$this->orig_method}($parser, $data);\r
+ }\r
+ }\r
+}\r
+class XML_HTMLSax3_CaseFolding {\r
+ var $orig_obj;\r
+ var $orig_open_method;\r
+ var $orig_close_method;\r
+ function XML_HTMLSax3_CaseFolding(&$orig_obj, $orig_open_method, $orig_close_method) {\r
+ $this->orig_obj =& $orig_obj;\r
+ $this->orig_open_method = $orig_open_method;\r
+ $this->orig_close_method = $orig_close_method;\r
+ }\r
+ function foldOpen(&$parser, $tag, $attrs=array(), $empty = FALSE) {\r
+ $this->orig_obj->{$this->orig_open_method}($parser, strtoupper($tag), $attrs, $empty);\r
+ }\r
+ function foldClose(&$parser, $tag, $empty = FALSE) {\r
+ $this->orig_obj->{$this->orig_close_method}($parser, strtoupper($tag), $empty);\r
+ }\r
+}\r
+class XML_HTMLSax3_Linefeed {\r
+ var $orig_obj;\r
+ var $orig_method;\r
+ function XML_HTMLSax3_LineFeed(&$orig_obj, $orig_method) {\r
+ $this->orig_obj =& $orig_obj;\r
+ $this->orig_method = $orig_method;\r
+ }\r
+ function breakData(&$parser, $data) {\r
+ $data = explode("\n",$data);\r
+ foreach ( $data as $chunk ) {\r
+ $this->orig_obj->{$this->orig_method}($parser, $chunk);\r
+ }\r
+ }\r
+}\r
+class XML_HTMLSax3_Tab {\r
+ var $orig_obj;\r
+ var $orig_method;\r
+ function XML_HTMLSax3_Tab(&$orig_obj, $orig_method) {\r
+ $this->orig_obj =& $orig_obj;\r
+ $this->orig_method = $orig_method;\r
+ }\r
+ function breakData(&$parser, $data) {\r
+ $data = explode("\t",$data);\r
+ foreach ( $data as $chunk ) {\r
+ $this->orig_obj->{$this->orig_method}($this, $chunk);\r
+ }\r
+ }\r
+}\r
+class XML_HTMLSax3_Entities_Parsed {\r
+ var $orig_obj;\r
+ var $orig_method;\r
+ function XML_HTMLSax3_Entities_Parsed(&$orig_obj, $orig_method) {\r
+ $this->orig_obj =& $orig_obj;\r
+ $this->orig_method = $orig_method;\r
+ }\r
+ function breakData(&$parser, $data) {\r
+ $data = preg_split('/(&.+?;)/',$data,-1,PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);\r
+ foreach ( $data as $chunk ) {\r
+ $chunk = html_entity_decode($chunk,ENT_NOQUOTES);\r
+ $this->orig_obj->{$this->orig_method}($this, $chunk);\r
+ }\r
+ }\r
+}\r
+if (version_compare(phpversion(), '4.3', '<') && !function_exists('html_entity_decode') ) {\r
+ function html_entity_decode($str, $style=ENT_NOQUOTES) {\r
+ return strtr($str,\r
+ array_flip(get_html_translation_table(HTML_ENTITIES,$style)));\r
+ }\r
+}\r
+class XML_HTMLSax3_Entities_Unparsed {\r
+ var $orig_obj;\r
+ var $orig_method;\r
+ function XML_HTMLSax3_Entities_Unparsed(&$orig_obj, $orig_method) {\r
+ $this->orig_obj =& $orig_obj;\r
+ $this->orig_method = $orig_method;\r
+ }\r
+ function breakData(&$parser, $data) {\r
+ $data = preg_split('/(&.+?;)/',$data,-1,PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);\r
+ foreach ( $data as $chunk ) {\r
+ $this->orig_obj->{$this->orig_method}($this, $chunk);\r
+ }\r
+ }\r
+}\r
+\r
+class XML_HTMLSax3_Escape_Stripper {\r
+ var $orig_obj;\r
+ var $orig_method;\r
+ function XML_HTMLSax3_Escape_Stripper(&$orig_obj, $orig_method) {\r
+ $this->orig_obj =& $orig_obj;\r
+ $this->orig_method = $orig_method;\r
+ }\r
+ function strip(&$parser, $data) {\r
+ if ( substr($data,0,2) == '--' ) {\r
+ $patterns = array(\r
+ '/^\-\-/', // Opening comment: --\r
+ '/\-\-$/', // Closing comment: --\r
+ );\r
+ $data = preg_replace($patterns,'',$data);\r
+\r
+ } else if ( substr($data,0,1) == '[' ) {\r
+ $patterns = array(\r
+ '/^\[.*CDATA.*\[/s', // Opening CDATA\r
+ '/\].*\]$/s', // Closing CDATA\r
+ );\r
+ $data = preg_replace($patterns,'',$data);\r
+ }\r
+\r
+ $this->orig_obj->{$this->orig_method}($this, $data);\r
+ }\r
+}\r
+?>
\ No newline at end of file