Daten aus Datei lesen und sortieren

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

  • Daten aus Datei lesen und sortieren

    Hallo,

    ich kann wirklich nicht gut PHP bin aber mitlerweile ganz stolz auf mich!

    Ich habe es geschaft eine Zahlung zu Paypal zu übertragen und ein Ergebniss zurück zu bekommen und dieses Ergebniss in einer Datei zu speichern...

    Jetzt bin ich aber auch am Ende.

    Ich möchte jetzt gerne bestimmte Informationen aus dieser Textdatei auslesen und den Eintrag danach löschen - Damit ich den Kunden automatisch als "gezahlt" in die Datenbank eintragen kann und ihm das Buch zuschicken kann.

    Aus der Textdatei interessiert mich nur EINE Information:

    transaction_subject=( KdNr. 18 ) 1x Chorographie - Handwerk und Vision
    und um genau zu sein nur die Zahl, in diesem Beispiel: 18

    Hier mal der Code aus der Datei:

    [02/16/2010 12:02 AM] - SUCCESS!
    IPN POST Vars from gateway:
    mc_gross=59.60, protection_eligibility=PartiallyEligible, address_status=unconfirmed, payer_id=J3WWKEBRRWYY8, tax=0.00, address_street=ESpachstr. 1, payment_date=15:01:48 Feb 15, 2010 PST, payment_status=Pending, charset=windows-1252, address_zip=79111, first_name=Test, address_country_code=DE, address_name=Test User, notify_version=2.9, custom=, payer_status=verified, business=tim.o_1266264534_biz@xxx.com, address_country=Germany, address_city=Freiburg, quantity=1, verify_sign=Aiw078V353cmpBS9fegUqAujOCEOALumdZcLdEs4cfRPWNJle-6Wk5L0, payer_email=tim.ow_1266264495_pre@xxx.com, txn_id=1RB56830KN904502H, payment_type=instant, last_name=User, address_state=Empty, receiver_email=tim.o_1266264534_biz@xxx.com, receiver_id=FSQS8QMZUSJJ2, pending_reason=multi_currency, txn_type=web_accept, item_name=2x Chorographie - Handwerk und Vision, mc_currency=EUR, item_number=, residence_country=DE, test_ipn=1, handling_amount=0.00, transaction_subject=( KdNr. 1 ) 2x Chorographie - Handwerk und Vision, payment_gross=, shipping=0.00,
    IPN Response from gateway Server:
    HTTP/1.1 200 OK
    Date: Mon, 15 Feb 2010 23:01:53 GMT
    Server: Apache/1.3.33 (Unix) mod_fastcgi/2.4.2 mod_gzip/1.3.26.1a mod_ssl/2.8.22 OpenSSL/0.9.7e
    Set-Cookie: c9MWDuvPtT9GIMyPc3jwol1VSlO=SL7LOBkkdd3vPiewyR5TnOdgZzBC4GLoMR-2Rz5EmWSYpJilYuddlPXgZidE3NGpkdnzk5ARtGugvp-28mh6Pb-MWf99coaxutV15fT2JLjFT3KKqtMxnEwizh04NspL0Vvt60%7cK5z2kFZ7AEkaJqhfoDdv4_D5P_HjYfVw6ROCfRNKY1TtMEgyxw 0V2L9M6eq8jHNEg8y2b0%7cmggTaqB-sg7dlS4Mq9AE3GdZRT1B-fQ84ly8DutdNcgcx-XmVmHwqYI0pCjKYgCEfjONl0%7c1266274913; domain=.paypal.com; path=/
    Set-Cookie: cookie_check=yes; expires=Thu, 13-Feb-2020 23:01:53 GMT; domain=.paypal.com; path=/
    Set-Cookie: navcmd=_notify-validate; domain=.paypal.com; path=/
    Set-Cookie: navlns=0; expires=Sun, 10-Feb-2030 23:01:53 GMT; domain=.paypal.com; path=/
    Set-Cookie: Apache=10.191.196.11.230631266274913468; path=/; expires=Sun, 03-Jan-04 16:33:37 GMT
    Connection: close
    Transfer-Encoding: chunked
    Content-Type: text/html; charset=UTF-8

    8
    VERIFIED
    0



    [02/16/2010 12:03 AM] - SUCCESS!
    IPN POST Vars from gateway:
    mc_gross=59.60, protection_eligibility=PartiallyEligible, address_status=unconfirmed, payer_id=J3WWKEBRRWYY8, tax=0.00, address_street=ESpachstr. 1, payment_date=15:03:04 Feb 15, 2010 PST, payment_status=Pending, charset=windows-1252, address_zip=79111, first_name=Test, address_country_code=DE, address_name=Test User, notify_version=2.9, custom=, payer_status=verified, business=tim.o_1266264534_biz@xxx.com, address_country=Germany, address_city=Freiburg, quantity=1, verify_sign=ASCGLr663GWXMpse9PymXKF-V83xAPGGk7vwrU7pmCvLlhWWFkNWi5XB, payer_email=tim.ow_1266264495_pre@xxx.com, txn_id=64A62403AN523430N, payment_type=instant, last_name=User, address_state=Empty, receiver_email=tim.o_1266264534_biz@xxx.com, receiver_id=FSQS8QMZUSJJ2, pending_reason=multi_currency, txn_type=web_accept, item_name=2x Chorographie - Handwerk und Vision, mc_currency=EUR, item_number=, residence_country=DE, test_ipn=1, handling_amount=0.00, transaction_subject=( KdNr. 108 ) 2x Chorographie - Handwerk und Vision, payment_gross=, shipping=0.00,
    IPN Response from gateway Server:
    HTTP/1.1 200 OK
    Date: Mon, 15 Feb 2010 23:03:09 GMT
    Server: Apache/1.3.33 (Unix) mod_fastcgi/2.4.2 mod_gzip/1.3.26.1a mod_ssl/2.8.22 OpenSSL/0.9.7e
    Set-Cookie: c9MWDuvPtT9GIMyPc3jwol1VSlO=u8AagZpwGRZtSagxizkqzUX-IXf7VC16j-uGaNIyJbFIosHu3zyTUoYesfrWuXO32H3r0r2vd8XxzxBK4RRjiHD7baGiSjggYWav7af2Ld34r5Mt99EuRH6Ndl7Uw1suLReBZ0 %7c9AeYvbLm5fJjUR5ARIOpr7gMfeMUEeCHdvCz4sme70jo3R6SVFYu3CcVuAqTFnPeBodqGG%7cov_ub0BedaLXwtM6ui9ea3Fl coaQF66BWA7FJqI7s0VaZ1y0NNuamOrZ8JuIBEYhGOk1lG%7c1266274989; domain=.paypal.com; path=/
    Set-Cookie: cookie_check=yes; expires=Thu, 13-Feb-2020 23:03:09 GMT; domain=.paypal.com; path=/
    Set-Cookie: navcmd=_notify-validate; domain=.paypal.com; path=/
    Set-Cookie: navlns=0; expires=Sun, 10-Feb-2030 23:03:09 GMT; domain=.paypal.com; path=/
    Set-Cookie: Apache=10.191.196.11.19871266274989240; path=/; expires=Sun, 03-Jan-04 16:34:53 GMT
    Connection: close
    Transfer-Encoding: chunked
    Content-Type: text/html; charset=UTF-8

    8
    VERIFIED
    0
    Bisher bin ich so weit:

    PHP-Code:
    $inhalt file('paypal.ipn_results.log');

    echo 
    $inhalt[0]; 
    Am liebsten würde ich jetzt nur die Kundennummern ( KdNr. 178 ) aus der Datei rausfiltern und die Datei danach KOMPLETT löschen (ist glaube ich das einfachste?)

    Kann mir jemand dabei bitte helfen?
    Zuletzt geändert von simi1987; 16.02.2010, 01:08.

  • #2
    Hallo,

    sieh dir am besten mal Reguläre Ausdrücke an. Mit denen kann man Texte sehr gut nach Mustern filtern.

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Danke für die schnelle Antwort, werde ich mir direkt mal ansehen.

      Kommentar


      • #4
        Nimm dir Zeit dafür. Wenn du noch nie damit zu tun hattest, wird es eine Menge Lesestoff sein...

        Aber es lohnt sich!
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          Mh... Spontan würde ich jetzt sagen:

          Ich mache eine schleife und gehe meine Textdatei Zeile für Zeile durch und kucke dann mit folgendem Code ob mein Text vorhanden ist:

          PHP-Code:
          if (preg_match("/x Chorographie/"$inhalt[$a])) 
          Dann hätte ich wenigstens schonmal den groben Code weg sortiert....

          Aber das Problem hierbei ist ja dass der Zeilenbruch ungünstig kommen könnte und ich so die wichtige Information verliere z.B.

          blablabla transaction_subject=( KdNr. 1 ) [ZEILENBRUCH] 2x Chorographie - Handwerk und Vision, blablabla
          Hast du nicht noch einen kleinen Tipp für mich?

          Mh... oder vieleicht mit explode ^^

          PHP-Code:
              $content implode(""file('paypal.ipn_results.log'));

              
          $teile explode(')'$content); 
          Jetzt mach ich noch preg_match und sortiere so die Teile raus wo eine "KdNr." dabei ist.

          dann implode ich wieder alles und explode nochmal die mit KdNr.

          [COLOR=#000000][COLOR=#006600][/COLOR][COLOR=#0000CC][/COLOR][COLOR=#006600][/COLOR][/COLOR]mh... mit sicherheit nicht elegant aber so langsam sollte ich es haben
          Zuletzt geändert von AmicaNoctis; 16.02.2010, 02:13. Grund: Doppelpost

          Kommentar


          • #6
            Willst du nur die Kundennummern haben, wenn Choreographien bezahlt wurden? Wenn nicht, würde ich einfach nach dem Betreff filtern:

            PHP-Code:
            preg_match_all("<transaction_subject=\\(\\s*KdNr\\.\\s+(\\d+)>i"$inhalt$matches); 
            $inhalt ist der gesamte Inhalt der Datei; $matches[1] ist dann ein Array von Kundennummern.

            Trotzdem bleibt für mich eine Frage offen: Was ist, wenn jemand nicht vollständig bezahlt, sondern nur einen Teil des Betrages?

            Übrigens: file_get_contents(...) statt implode("", file(...))

            Gruß,

            Amica
            Zuletzt geändert von AmicaNoctis; 16.02.2010, 02:14.
            [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
            Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
            Super, danke!
            [/COLOR]

            Kommentar


            • #7
              Mh... Jetzt bin ich zwar fast fertig mit meinem Code aber deiner sieht irgendwie besser aus Danke dafür, werde ich direkt mal testen!

              Also es gibt sobald ich weiss keine Möglichkeit bei Paypal nur einen Teilbetrag zu zahlen. Ich sende ja eine Zahlungsaufforderung mit XX Euro an Paypal.

              Da kann man dann eigentlich nurnoch Zahlungsmethode wählen und "jetzt zahlen" drücken, aber eine Funktion um einen Teilbetrag zu zahlen habe ich noch nicht gesehen?

              Würde der Kunde jetzt einen Teilbetrag direkt an meine eMail-Adresse überweisen würde Paypal mir auch garkeine Rückmeldung geben sondern nur wenn er direkt meine Zahlungsaufforderung bezahlt.

              Kommentar


              • #8
                So, das Script funktioniert jetzt und dein Code ist auch echt genial - nochmal danke dafür!

                Eine frage hätte ich aber noch:

                Gibt es irgendwo eine gute Anleitung für diese Zeichen? Weil ich würde den Code jetzt auch gerne komplett verstehen damit ich das nächste mal nicht wieder fragen muss

                (\\s*KdNr\\.\\s+(\\d+

                Abgesehen von diesem Link: PHP: PCRE - Manual

                Also eine Seite wo es "richtig" erklärt wird, kennt da wer was?

                Kommentar


                • #9
                  Regenechsen :: Ideas come true | Reguläre Ausdrücke allg.

                  trotzdem ist das PHP Manual im Zweifelsfall die richtige Stelle. Dort wird auch alles erklärt. Es ist nur vielleicht etwas viel auf einmal, wenn man gerade anfängt. Ich empfehle dir daher, http://de3.php.net/manual/de/referen...ern.syntax.php trotzdem mal zu lesen. Es sind ja viele Beispiele dabei.
                  [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                  Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                  Super, danke!
                  [/COLOR]

                  Kommentar


                  • #10
                    und nochmal danke! Genau was ich gesucht habe

                    Kommentar

                    Lädt...
                    X