Announcement

Collapse
No announcement yet.

Class problems on Live Site

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Class problems on Live Site

    I have following XML Parser Class:
    PHP Code:
    <?php
    class XMLParser
    {
    private 
    $file;
    private 
    $stack = array();
    private 
    $parser_file null;

    // start_element_handler ( resource parser, string name, array attribs )
    private function startElement($parser$name$attribs)
    {

    $tag=array("name"=>$name,"attrs"=>$attribs);
    array_push($this->stack,$tag);
    }

    // end_element_handler ( resource parser, string name )
    private function endElement($parser$name)
    {

    $this->stack[count($this->stack)-2]['children'][] = $this->stack[count($this->stack)-1];
    array_pop($this->stack);
    }

    // handler ( resource parser, string data )
    private function characterData($parser$data)
    {
    if(
    trim($data))
    {
    if(isset(
    $this->stack[count($this->stack)-1]['data']))
    {
    $this->stack[count($this->stack)-1]['data'] .= $data;
    }
    else
    {
    $this->stack[count($this->stack)-1]['data'] = $data;
    }
    }
    }
    // handler ( resource parser, string target, string data )
    private function PIHandler($parser$target$data)
    {
    //PHP EVALUATION
    if ((strtolower($target)) == "php") {

    //eval($data); gust doesn't work if you want the
    //string added to the array
    $text .= '<?php '.$data.' ?>';
    ob_start();
    eval (
    '?>' $text);
    $text ob_get_clean();
    $this->stack[count($this->stack)-1]['data'] .= $text;

    }

    }

    private function 
    defaultHandler($parser$data)
    {

    }

    private function 
    externalEntityRefHandler($parser$openEntityNames$base$systemId,
    $publicId) {
    if (
    $systemId) {
    if (!list(
    $parser$fp) = new_xml_parser($systemId)) {
    printf("Could not open entity %s at %s\n"$openEntityNames,
    $systemId);
    return 
    false;
    }
    while (
    $data fread($fp4096)) {
    if (!
    xml_parse($parser$datafeof($fp))) {
    printf("XML error: %s at line %d while parsing entity %s\n",
    xml_error_string(xml_get_error_code($parser)),
    xml_get_current_line_number($parser), $openEntityNames);
    xml_parser_free($parser);
    return 
    false;
    }
    }
    xml_parser_free($parser);
    return 
    true;
    }
    return 
    false;
    }

    private function 
    new_xml_parser($file)
    {

    $xml_parser xml_parser_create();

    xml_parser_set_option($xml_parserXML_OPTION_CASE_FOLDING0);

    xml_set_processing_instruction_handler($xml_parser, array (&$this"PIHandler"));

    xml_set_element_handler($xml_parser, array (&$this"startElement"), array (&$this"endElement"));

    xml_set_character_data_handler($xml_parser, array ( &$this"characterData"));

    xml_set_default_handler($xml_parser, array ( &$this"defaultHandler"));

    xml_set_external_entity_ref_handler($xml_parser, array ( &$this"externalEntityRefHandler"));

    if (!(
    $fp = @fopen($file"r"))) {
    return 
    false;
    }
    if (!
    is_array($this->parser_file)) {
    settype($this->parser_file"array");
    }
    $this->parser_file[$xml_parser] = $file;
    return array(
    $xml_parser$fp);
    }

    function 
    NewParse($file)
    {
    if (!(list(
    $xml_parser$fp) = $this->new_xml_parser($file))) {
    die(
    "could not open XML input");
    }

    //ERROR
    while ($data fread($fp4096)) {
    if (!
    xml_parse($xml_parser$datafeof($fp))) {
    die(
    sprintf("XML error: %s at line %d\n",
    xml_error_string(xml_get_error_code($xml_parser)),
    xml_get_current_line_number($xml_parser)));
    }
    }
    //END
    xml_parser_free($xml_parser);
    return 
    $this->stack;
    }
    }
    ?>
    It works fine on my test server, but the live site throw out an error:
    Code:
    Parse error:  syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /home/www/web102/html/class/xmlreader.php on line 4
    Any ideas??
    Sorry for my English
    Let'z talk German

  • #2
    Do you have the same PHP versions?

    Comment


    • #3
      Version 4.4.2 is on the live site
      and
      Version 5.1.4 on the local machine

      Actually I thought I have PHP5 on both systems, but it seems that the provider changed it back.
      Sorry for my English
      Let'z talk German

      Comment

      Related Topics

      Collapse

      Working...
      X