Kundennummer aus String Filtern ....

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

  • Kundennummer aus String Filtern ....

    Hallo Leidensgenossen ;-)
    ich habe so ein kleines Problem und habe eigentlich gedacht, dass ich hierfür auch eine Lösung gefunden habe. Aber ich brauche nun eine bessere Lösung ...

    Zu meinem Problem:
    Ich speicher unsere Kontobewegungen als CSV Datei ab und werte diese mit einem Script aus. Die Buchungen sehen in etwa so aus:
    AUFTRAGSNUMMER 0418-1271 Max Musterman

    Die ersten 4 Stellen sind das Datum und nach dem Strich eine fortlaufende Nummer. Daher schau ich erstmal mit preg_match
    nach 4 Ziffernstellen und dann nach einem Minus.

    PHP-Code:
    if(preg_match("/[0-9]{4,}[-]/i"$verwendung)) { 
          
    $position strpos($verwendung,"-");
          
    $t_filter substr($verwendung$position-4);
          
    $filter explode(" ",$t_filter);
          echo 
    $filter[0]."<br />";

    Zu 90% bekomme ich auch alle Datensätze so ausgelesen. Aber nun gibt es ganz schlaue Kunden die folgendes machen:

    AUFTRAGS-NR.0507-1573ONB-REF
    AUFTR-NR 0506-1777 EZV-REF

    Diese bekomme ich natürlich nicht mit meinem Script ausgelesen und suche irgendwie nach eine Lösung. Jemand eine Idee ?
    Zuletzt geändert von Mundgeruch; 19.06.2008, 09:00.

  • #2
    Wieso gehst du erst mit preg_match() drauf los und dann zerlegst du den String doch zu Fuß? preg_match() kann die Matches auch in einem dritten Parameter hinterlegen.

    Kommentar


    • #3
      Ui dann schau ich nochmal, ehrlich gesagt hasse ich REGEX und versuche immer andere Wege zu nutzen.

      Das mit einem dritten Parameter war mir eher unbekannt, aber ich gucke gleich mal ;-)

      Nachtrag: Super! Hätte ich direkt mal ins Buch geguckt, wäre das nicht passiert

      Klappt nun einwandfrei...
      Zuletzt geändert von Mundgeruch; 19.06.2008, 10:04.

      Kommentar


      • #4
        Reichlich ungenaue Problemstellung. Aus welchem String willst du was herausholen, bzw was steht in $verwendung, die ganze Zeile oder nur die Auftragsnummer. Und wie liest du die CSV-Datei ein?
        Grundsätzlich ist das aber sicher, wie von onemorenerd schon gesagt, mit einem Befehl lösbar.
        Gruss
        H2O

        Kommentar


        • #5
          Joh siehe mein anderes Posting es klappt einwandfrei mit einem Befehl. Aber wie schon erwähnt, es lag einfach daran, dass ich regex einfach nicht mag und immer nach dummen Umwegen suche. Aber eigentlich Quatsch, weil es auch nicht ganz so schwer ist ...

          Achso so ist meine Lösung:
          PHP-Code:
          if(preg_match("/[0-9]{4}[-][0-9]{3,7}/i"$auftrnr
          $rueckgabePREG_OFFSET_CAPTURE)){ 

          Kommentar


          • #6
            PHP-Code:
            if(preg_match("/[0-9]{4}[-][0-9]{3,7}/i"$auftrnr
            Also eine eigene Zeichenklasse für eine einzelnes Zeichen ist doch etwas gar übertrieben Und der Parameter i bei Zahlen macht auch nicht wirklich viel Sinn
            PHP-Code:
            $reg '/\\\d{4}-\\\d{3,7}/'
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar

            Lädt...
            X