PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   PHP Developer Forum (https://www.php-resource.de/forum/php-developer-forum/)
-   -   Kundennummer aus String Filtern .... (https://www.php-resource.de/forum/php-developer-forum/92554-kundennummer-aus-string-filtern.html)

Mundgeruch 19-06-2008 09:57

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 ?

onemorenerd 19-06-2008 10:01

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.

Mundgeruch 19-06-2008 10:04

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 :D

Klappt nun einwandfrei...

H2O 19-06-2008 11:03

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.

Mundgeruch 19-06-2008 11:08

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)){ 


jahlives 19-06-2008 11:16

Zitat:

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}/'



Alle Zeitangaben in WEZ +2. Es ist jetzt 17:09 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG