Ah I was thinking along the lines of
Code:
class XML_HTMLSax_StateParser4_0 {
var $rawtext;
var $position;
var $length;
var $State = array();
function unscanCharacter() {
$this->position -= 1;
}
function ignoreCharacter() {
$this->position += 1;
}
function scanCharacter() {
if ($this->position < $this->length) {
return $this->rawtext{$this->position++};
}
}
function scanUntilString($string) {
$start = $this->position;
$this->position = strpos($this->rawtext, $string, $start);
if ($this->position === FALSE) {
$this->position = $this->length;
}
return substr($this->rawtext, $start, $this->position - $start);
}
function scanUntilCharacters($string) {
$startpos = $this->position;
while ($this->position < $this->length && strpos($string, $this->rawtext{$this->position}) === FALSE) {
++$this->position;
}
return substr($this->rawtext, $startpos, $this->position - $startpos);
}
function ignoreWhitespace() {
while ($this->position < $this->length &&
strpos(" \n\r\t", $this->rawtext{$this->position}) !== FALSE) {
++$this->position;
}
}
function parse($data) {
$this->rawtext = $data;
$this->length = strlen($data);
$this->position = 0;
$this->_parse();
}
function _parse($state = XML_HTMLSAX_STATE_START) {
do {
$state = $this->State[$state]->parse($this);
} while ($state != XML_HTMLSAX_STATE_STOP &&
$this->position < $this->length);
}
}
// version_compare is PHP 4.1
if (function_exists('version_compare') && version_compare(phpversion(), '4.3') >= 0) {
class XML_HTMLSax_StateParser4_3 extends XML_HTMLSax_StateParser4_0 {
function scanUntilCharacters($string) {
$startpos = $this->position;
$length = strcspn($this->rawtext, $string, $startpos);
$this->position += $length;
return substr($this->rawtext, $startpos, $length);
}
function ignoreWhitespace() {
$this->position += strspn($this->rawtext, " \n\r\t", $this->position);
}
}
class XML_HTMLSax_StateParser extends XML_HTMLSax_StateParser4_3 { }
}
else
{
class XML_HTMLSax_StateParser extends XML_HTMLSax_StateParser4_0 { }
}
Then
Code:
class XML_HTMLSax extends XML_HTMLSax_StateParser {
would inherit the correct version. Bit more of a hack maybe.
Bookmarks