Auslesen einzelner Zeichen mit fgets()

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

  • 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

    Comment


    • #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

      Comment


      • #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

        Comment


        • #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

          Comment


          • #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!

            Comment


            • #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

              Comment


              • #8
                aaaaalso was lernt man daraus?

                Comment


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

                  Comment


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

                    Comment


                    • #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

                      Comment


                      • #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.

                        Comment


                        • #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

                          Comment


                          • #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?

                            Comment


                            • #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 !!!!!!!

                              Comment

                              Working...
                              X