Anzeige:
Ergebnis 1 bis 3 von 3

Thema: Daten verarbeiten mit curl

  1. #1
    Registrierter Benutzer
    Registriert seit
    05.08.2014
    Beiträge
    2

    Question Daten verarbeiten mit curl

    Hallo zusammen,

    ich arbeite das erste Mal mit curl und weiß nicht genau, wie ich am besten die daten verarbeiten soll. Also ich lese mittels curl eine csv von einer url aus. das funktioniert soweit auch einwandfei.

    PHP-Code:
    <?php
    function get_data($url)
    {
    $ch curl_init();
    $timeout 5;
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
    curl_setopt($chCURLOPT_HTTPHEADER, array('Content-Type: text/plain'));
    $data curl_exec($ch);
    curl_close($ch);
    return 
    $data;
    }

    // Aufruf der Funktion get_data
    $str get_data('url');
    echo 
    $str;
    ?>
    ich bekomme nun folgende ausgabe:

    Code:
    Status;SubID 0;"243" 0;"244"
    soweit alles gut. das sind genau die daten, die ich haben will. allerdings weiß ich jetzt nicht so genau, wie ich damit arbeiten soll, da die datensätze in einen string komplett hintereinander geklatscht werden. ich hatte gehofft die daten mit curl in ein array auslesen zu können, um dies dann zeilenweise abarbeiten zu können.

    Code:
    Status;SubID
    0;"243"
    0;"244"
    eigentlich sollte es ja so aussehen. es handelt sich ja um eine reihe von datensätzen. in einem array könnte man, diese datensätze nun einfach durchlaufen und mit der datenbank abgleichen. ich habe allerdings keine curl-funktion gefunden, die mir die daten direkt in ein array schreibt.

    würde mich über hilfe freuen. danke

    gruß
    knuff

  2. #2
    Registrierter Benutzer
    Registriert seit
    07.05.2014
    Beiträge
    5
    Hi,

    direkt mit curl kann ich leider auch keine Lösung präsentieren, aber mit Hilfe von str_getcsv wäre es möglich, die eingelesenen Daten nachträglich aufzubereiten, damit sie entsprechend für Datenbankoperationen vorliegen:

    Code:
    // Verarbeitung der CSV-Daten
    $csvData = array();
    if (!empty($data)) {
      $fieldNames = array();
      $tmpData = str_getcsv($data, "\n");
      foreach($tmpData as $idx => $row) {
        // Die erste Zeile enthaelt die Feldnamen der Werte
        if ($idx == 0) {
          $fieldNames = str_getcsv($row, ';');
        } else {
          $row = str_getcsv($row, ';');
          // Sofern Daten fuer die Zeile vorhanden, diese uebernehmen
          if (!empty($row)) {
            $tmp = array();
            foreach ($fieldNames as $fIdx => $fName) {
              $tmp[$fName] = $row[$fIdx];
            }
            if (!empty($tmp)) {
              $csvData[] = $tmp;
            }
          }
        }
      }
    }
    Eine mögliche Alternative wäre vielleicht auch fgetcsv, die ich hier vorgestellt habe.

  3. #3
    Registrierter Benutzer
    Registriert seit
    30.12.2001
    Beiträge
    444
    Sieht für mich nach einer simplen Split Geschichte aus.

    PHP-Code:
    $pairs preg_split("/ /",$curl_data)
    foreach 
    $pairs as $one_pair {
      list ( 
    $e1,$e2 ) = 
                
    preg_split("/;/",$one_pair); 
      
    mach_was($e1,$e2);
      } 

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •