Auslesen einzelner Zeichen mit fgets()

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

  • Auslesen einzelner Zeichen mit fgets()

    Einen schönen guten Morgen wünsche ich der Community.

    Mir wurde gesagt dass man bei Problemen bei den man nicht mehr weiter weis evtl. hier eine Lösung oder einen Wink bekommt.

    Ich muss aus einer Datei, die auf einem anderen Server durch ein Linkaufruf erzeugt wird, einzelne Zeichenketten auslesen.

    Hier mal der Code :
    PHP-Code:

    $URL 
    ="... hier wird ein String an eine Webadresse übergeben und dieser gibt mir eine Information zurück !";


    $fp1=@fopen("$URL""r");
    while (!
    feof ($fp1))
    {
                 
    $line fgets ($fp11024);


    Das Ergebnis würde hier folgendes sein :
    100
    Status:1280216613
    Nun möchte ich einmal die dreistellige Zahl ( hier 100 ) auslesen - diese ist immer dreistellig und die Zahl hinter Status. Aber ich schaffe nichteinmal die erst Variante, denn mit
    PHP-Code:
        $line fgets ($fp14); 
    liest er mir die letzten Ziffern der grösseren Zahl aus, ich habe leider nirgends gefunden wie ich den Zeiger wieder an die erste Stelle setze.

    Wenn ich den String so übergebe, dass die der Status nicht angezeigt wird, dann klappt es und die 100 wird mir ausgegeben.

    Und wie bekomme ich die gössere zahl ohne 'Status:' in eine Variabel.

    Für Hilfe wäre ich super dankbar

    Gruss Celina

  • #2
    wozu einzelne Zeichen einlesen. substr, explode sollte dir dabei helfen

    Kommentar


    • #3
      danke für die Antwort !

      Geht das ich weis nicht wie diese Datei aufgebaut ist und ob es eine Datei im Sinne einer Datei ist, denn ich bekomme nur diese Meldung zurück und mit den Variabeln muss ich doch eine bestimmte Datei ansprechen - oder ?

      Hättest Du mal ein Beispielcode für mich ?

      Gruss Celina

      Kommentar


      • #4
        ich verstehe nicht was du meinst. Wenn du nicht weißt, was in der Datei und wie sie aufgebaut ist, nach welchen Kriterien holst du dann die Informationen daraus

        Kommentar


        • #5
          Sorry - ich weis etwas kompliziert.

          Es ist folgendermassen, es handelt sich um ein SMS-Provider dem ich über einen Link meine Daten für den SMS-Versand schicke.

          PHP-Code:
          $URL ="http://sms.gateway.de/?id=$sms_username&pw=$sms_passwort&absender=$von&empfaenger=$smsnummer&
          text=
          $text_sms&type=$_POST[smstyp]&reply_email=$_SESSION[email]&flash=$_POST[flashsms]&reply=1"
          Ich bekomme dann einam die Information zurück die mir sagt,
          dass die SMS erfolgreich verschickt wurde, dafür steht die 100
          und wenn ich im Sytanx -> reply=1 <- angebe zusätlich eine Nummer
          zugewiesen anhand dieser Nummer kann ich nachverfolgen ob auf
          diese SMS geantwortet wurde, dass wäre dann die längere Ziffernreinfolge.

          Wenn ich nicht -> reply=1 <- angebe dann kann ich mit folgendem Code
          PHP-Code:
          $fp1=@fopen("$URL""r");
          while (!
          feof ($fp1))
          {
                      
          $line fgets ($fp11024);
          }
          if(
          $line == "100") {
           
          // SMS-Guthaben um 1 abziehen
          $counter_update "UPDATE smsbox_user SET counter = counter - 1 WHERE passwort ='$_SESSION[passwort]'";
          $up_date = @mysql_query($counter_update);
          .... 
          arbeiten wie z.B. durch -> if($line == "100") <- abfragen ob die die SMS verschickt worden ist und im SMS-Portal diese Meldung auch ausgeben
          dann z.B. in die DB schreiben und von einem Gutahaben abziehen.

          Wenn ich jedoch -> reply=1 <- nutze klappt es nicht mehr, dann scheint
          der Zeiger von hinten nach vorne zu lesen, aber nur scheint.
          denn wenn ich z.B.
          PHP-Code:
          $fp1=@fopen("$URL""r");
          while (!
          feof ($fp1))
          {
                 
          $line fgets ($fp115);


          angebe dann bekomme ich die Antwort -> 1236083738 <-
          das wäre die ganze Codezahl, wenn ich jedoch -> $line = fgets ($fp1, 16);
          <- angebe dann scheint er wieder von hinten an zu fangen.

          Sehr merkwürdig ?????

          Die Komplette ausgabe wäre absolut inkl. dem zeilenumbruch :
          100
          Status:1236083738
          Gruss Celina

          Kommentar


          • #6
            Wenn ich jedoch -> reply=1 <- nutze klappt es nicht mehr, dann scheint
            der Zeiger von hinten nach vorne zu lesen, aber nur scheint.
            nein, er liest schon richtig, nur, du prüfst nachdem die Schleife beendet ist. Was müßte dann deiner Meinung nach $line enthalten? Schau dir deinen Code genau an, oder echo $line in die Schleife packen, dann wird dir klar!

            Kommentar


            • #7
              Wenn ich -> echo $line; <- in die schleife packe :
              PHP-Code:
              $fp1=@fopen("$URL""r");
              while (!
              feof ($fp1))
              {
                      
              $line fgets ($fp11024);
                      echo 
              $line;


              dann erhalte ich auch nur diese Ausgabe :
              100
              Status:1269167527
              Gruss Celina

              Kommentar


              • #8
                aaaaalso was lernt man daraus?

                Kommentar


                • #9
                  -> das ich keine Schleife brauche !?

                  Kommentar


                  • #10
                    nope, entweder
                    PHP-Code:
                    while (... ) $line[] = fgets(...);
                    // dann $line auswerten 
                    oder
                    PHP-Code:
                    while (...) {
                       
                    $line fgets(...);
                       
                    // Auswerten

                    Kommentar


                    • #11
                      Mhhh da bin ich vielleicht zu blöd für,
                      denn die Auswertung oder Zuweisung in die Variabel
                      $line geschiet doch in der Schleife.

                      Dann hat doch die Variabel $line auch nach der Schleife einen
                      Wert und mit diesem Wert möchte ich arbeiten nur ist die Ausgabe zwar da aber, ich sage mal, nicht in der reihenfolge wie ich es haben möchte.

                      Da es ja noch ca. 25 anderen Meldungen gibt
                      und ich diese alle Auswerten muss :
                      PHP-Code:
                      if($line == "110") {
                      $fehler="1";
                        
                      $fehler_meld="Falsche Benutzerdaten !";
                      }
                      if(
                      $line == "111") {
                      $fehler="1";
                        
                      $fehler_meld="IP Sperre aktiv !";
                      }
                      if(
                      $line == "112") {
                      $fehler="1";
                        
                      $fehler_meld="Keine Berechtigung !";
                      }
                      if(
                      $line == "120") {
                      $fehler="1";
                        
                      $fehler_meld="Absendernummer ungültig !";
                      }
                      .... 
                      kann ich ja nicht alles in die Schleife setzen.

                      Es muss ja nur die Möglichkeit geben von links nach rechts zu lesen und nicht von rechts nach links und was mir noch aufgefallen ist wenn ich nur
                      PHP-Code:
                      $fp1=@fopen("$URL""r");
                      //while (!feof ($fp1))
                      //{
                                
                      $line fgets ($fp11024);
                              echo 
                      $line;

                      //} 
                      setze bekomme ich das selbe Ergebnis !

                      Oder bin ich total auf dem Holzweg ?

                      Gruss Celina

                      Kommentar


                      • #12
                        ok, mach mal so
                        PHP-Code:
                        $i 1;
                        $fp1=@fopen("$URL""r");
                        while (!
                        feof ($fp1))
                        {
                                
                        $line fgets ($fp11024);
                                echo 
                        $i.': '.$line.'<br />';
                                
                        $i++;

                        was bekommst du?

                        Außerdem kannst du die Auswertung in einer Funktion packen, ist übersichtlicher/strukturierter; schau dir dabei switch an.

                        Kommentar


                        • #13
                          Bei deinem Code bekomme ich folgendes raus :
                          1: 100
                          Status:1407796123
                          Bezüglich der Switch-Anweisung, da habe ich mich schoneinmal dran probiert, aber ohne Erfolg :-) Bin halt noch Anfänger !

                          Gruss Celina

                          Kommentar


                          • #14
                            Ah ... dann probiere:
                            PHP-Code:
                            $response_code substr($line,0,3);
                            $response_status substr(strstr($line,':'),1);
                            echo 
                            $response_code.' - '.$response_status
                            wo liegt denn das Problem bei switch? Fehlermeldung? Code?

                            Kommentar


                            • #15
                              Super danke hat geklappt :-)
                              Werde mir die Befehle mal im manuel anschauen.

                              Das mit dem Switch hatte ich früher schon mal mit einem
                              anderen Script in Angriff genommen, war glaube ich ein
                              Whois-Script und es hatte nicht funktioniert.

                              Muss mich warscheinlich nochmal dran setzen und es nochmal
                              versuche, möchte Dich nicht zu sehr strapazieren :-)

                              Ich bin dankbar für Deine Hilfe !!!!!!!

                              Kommentar

                              Lädt...
                              X