Ankündigung

Einklappen
Keine Ankündigung bisher.

file_get_contents -> curl

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • file_get_contents -> curl

    Hallo zusammen,

    ich habe ein Script womit ich Daten von einer XML-Datei
    in eine Mysl-Datenbank importiere kann.

    Da der Server nur PHP4 unterstützt habe ich
    eine SimpleXML-Klasse für PHP4 gefunden.

    Nun ist aber das Problem das allow_url_fopen
    auf dem Server nicht aktiviert werden kann.

    Kann mir jemand helfen folgendes Skript mit
    Curl ans laufen zu bekommen ?

    Ich habe jetzt schon diverse Sachen versucht,
    aber der gibt mir immer falsche Daten aus.

    Bisheriges Skript welches nur mit
    allow_url_fopen funktioniert:

    PHP-Code:
        function xml_load_file($file$resulttype 'object'$encoding 'ISO-8859-1')
        {
            
    $php_errormsg="";
            
    $this->result="";
            
    $this->evalCode="";
            
    $values="";
               
    $data file_get_contents($file);    

            if (!
    $data)
            return 
    'Cannot open xml document: ' . (isset($php_errormsg) ? $php_errormsg $file);

            
    $parser xml_parser_create($encoding);
            
    xml_parser_set_option($parserXML_OPTION_CASE_FOLDING0);
            
    xml_parser_set_option($parserXML_OPTION_SKIP_WHITE1);
            
    $ok xml_parse_into_struct($parser$data$values);
            if (!
    $ok) {
                
    $errmsg sprintf("XML parse error %d '%s' at line %d, column %d (byte index %d)",
                
    xml_get_error_code($parser),
                
    xml_error_string(xml_get_error_code($parser)),
                
    xml_get_current_line_number($parser),
                
    xml_get_current_column_number($parser),
                
    xml_get_current_byte_index($parser));
            } 
    Meine abgeänderte Version mit CURL:

    PHP-Code:
        function xml_load_file($file$resulttype 'object'$encoding 'ISO-8859-1')
        {
            
    $php_errormsg="";
            
    $this->result="";
            
    $this->evalCode="";
            
    $values="";
    //        $data = file_get_contents($file);

          
    $url $file;
          
    $ch curl_init();
          
    curl_setopt($chCURLOPT_HEADER0);
          
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
          
    curl_setopt($chCURLOPT_URL$url);
          
    $data curl_exec($ch);
          
    curl_close($ch);
          return 
    $data;
        

            if (!
    $data)
            return 
    'Cannot open xml document: ' . (isset($php_errormsg) ? $php_errormsg $file);

            
    $parser xml_parser_create($encoding);
            
    xml_parser_set_option($parserXML_OPTION_CASE_FOLDING0);
            
    xml_parser_set_option($parserXML_OPTION_SKIP_WHITE1);
            
    $ok xml_parse_into_struct($parser$data$values);
            if (!
    $ok) {
                
    $errmsg sprintf("XML parse error %d '%s' at line %d, column %d (byte index %d)",
                
    xml_get_error_code($parser),
                
    xml_error_string(xml_get_error_code($parser)),
                
    xml_get_current_line_number($parser),
                
    xml_get_current_column_number($parser),
                
    xml_get_current_byte_index($parser));
            } 
    Liebe Grüße
    Jason


  • #2
    auf den ersten blick

    PHP-Code:
          curl_close($ch);
          return 
    $data
    das return gibt $data für die funktion zurück, jeglicher code danach wird NIE ausgeführt ... könnte vielleicht dein problem sein.
    robo47.net - Blog, Codeschnipsel und mehr
    | Caching-Klassen und Opcode Caches in php | Robo47 Components - PHP Library extending Zend Framework

    Kommentar


    • #3
      Ach, ja klar return $data; habe ich völlig übersehen,
      manchmal sieht man vor lauter Bäumen den Wald nicht.

      Dankeschön, jetzt funktioniert alles

      Lg
      Jason

      Kommentar

      Lädt...
      X