It doesn't give me any errors anymore... but it doesn't work either! Can someone tell me if there's something wrong with my code? It's base on the code provided by SearchHippo.com, and I am making an OOP module out of it (which I am going to give to SearchHippo, so everyone can use it).
Pleeeeeease.... I'm actually losing sleep over this. 🙁
class Hippo {
var $recctr;
var $curstate;
var $recs;
var $qrystatus;
var $data_version;
var $in_item_tag;
var $xml_parser;
var $q;
var $i;
var $c;
var $qenc, $ienc, $cenc;
function startElementHandler ($parser, $element_name, $element_attribs)
{
if ($element_name == "RESULTS") {
$this->qrystatus ["count"] = trim ($element_attribs ["COUNT"]);
$this->qrystatus ["head"] = trim ($element_attribs ["HEAD"]);
$this->qrystatus ["tail"] = trim ($element_attribs ["TAIL"]);
$this->qrystatus ["nexturl"] = trim ($element_attribs ["NEXTURL"]);
$this->qrystatus ["prevurl"] = trim ($element_attribs ["PREVURL"]);
}
if ($element_name == "RECORD") {
$this->recs [$this->recctr] ["id"] = trim ($element_attribs ["ID"]);
$this->recs [$this->recctr] ["timestamp"] = trim ($element_attribs ["TIMESTAMP"]);
$this->recs [$this->recctr] ["size"] = trim ($element_attribs ["SIZE"]);
}
if ($element_name == "SEARCHHIPPO") {
$this->data_version = trim ($element_attribs ["VERSION"]);
}
$this->curstate = $element_name;
}
function endElementHandler ($parser, $element_name)
{
$this->curstate = "";
if ($element_name == "RECORD") { $this->recctr++; }
}
function characterDataHandler ($parser, $data)
{
if ($this->curstate == "") return;
else if ($this->curstate == "URL") { $this->recs [$this->recctr] ["url"] = trim ($data); }
else if ($this->curstate == "DISPURL") { $this->recs [$this->recctr] ["dispurl"] = trim ($data); }
else if ($this->curstate == "TITLE") { $this->recs [$this->recctr] ["title"] = trim ($data); }
else if ($this->curstate == "DESCR") { $this->recs [$this->recctr] ["descr"] = trim ($data); }
}
function Hippo() {
$this->recctr = 0; // number of records retrieved
$this->in_item_tag = 0; // flag for expat parsing
$this->curstate = ''; // for xpath state
$this->recs = array (); // returned data results
$this->qrystatus = array (); // returned data status
$this->data_version = ''; // version of results page
$this->xml_parser = xml_parser_create();
//credit for this "fix" goes to ahundiak of PHPBuilder.com
xml_set_element_handler ($this->xml_parser,array($this,startElementHandler),array($this,endElementHandler));
xml_set_character_data_handler ($this->xml_parser,array($this,characterDataHandler));
//--------------
$this->q = $_GET['q'];
$this->q = stripslashes($this->q);
$this->i = $_GET['i'];
$this->c = $_GET['c'];
$this->qenc = urlencode($this->q);
$this->ienc = urlencode($this->i);
$this->cenc = urlencode($this->c);
$qenc = $this->qenc;
$ienc = $this->ienc;
$cenc = $this->cenc;
$fp = fopen (
"http://www.searchhippo.com/qxml.php?q=$qenc&c=$cenc&i=$ienc", "r");
if ($fp) {
$data = fread ($fp, 4096);
while ($data) {
//if (!xml_parse ($this->xml_parser, $data, feof ($fp))) { break; }
xml_parse($this->xml_parser,$data,feof($fp));
$data = fread ($fp, 4096);
}
}
xml_parser_free ($this->xml_parser);
// This should output some of the parse data... but it's
// always empty!!!
echo $this->recctr;
print_r($this->recs);
print_r($this->qrystatus);
}
}
$search = new Hippo();