[PHP] (leesbare) unieke string en preg_match

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • m33p
  • Registratie: September 2002
  • Laatst online: 20-05 16:58
Ik ben bezig met een kleine module welke RaboBank transactie overzichten kan inlezen. Het betreft een niet-zakelijke rekening, en het formaat is als CSV. So far no problems. Ik heb alle data in arrays en kan er mee werken.

Nou gaat het er om dat men bij een bestelling als opmerking een string of iets anders herkenbaars plaatst om de transactie te kunnen onderschijven van de transacties welke niet geparsed moeten worden. Ik heb de beschikking over een klantnummer en een ordernummer. Deze zijn beiden 4 cijfers en lopen in princiepe altijd op.

Dit kan allemaal nog aangepast worden. Het probleem waar ik mee zit is dat de preg_match niet goed gaat. Ik ben niet zo'n held met regular expressions, en ik kom er dan ook even niet uit ;) Ik kan het werkend krijgen met een simpelere string, maar ik ben bang dat ik dan problemen ga krijgen omdat het dan niet uniek genoeg heb.

Op het moment had ik een strint als volgt in mijn hoofd:
code:
1
LDK-0005/0003


De eerste 3 letters zijn een indentificatie (uniek, altijd hetzelfde), de - is gewoom om het nog wat te schijden, zou in princiepe ook weg kunnen. De 0005 of 0003 kunnen het ordernummer / klantnummer zijn. De / is om deze 2 te schijden, zou ook weg kunnen en dan gewoon een standaard aanhouden van 4 characters maar wanneer er meer dan 9999 bestellingen zijn gaat dat ook problemen opleveren. Nou ga ik er niet van uit dat het zo ver gaat komen, maar als het gewoon direct goed kan, waarom niet.

De regular expression die ik heb is als volgt:
code:
1
/(LDK-)+[0-9]{0,4}[0-9]{0,4}/


Nou mist hier dus het stukje met de forward slash, dat krijg ik niet voor elkaar. Ik weet dat het simpel is, want het is me eerder gelukt, maar zoals ik zal zei weet ik niet zo veel van regular expressions ;)

Iemand enig idee hoe ik dit werkend krijg, of heeft er misschien iemand wel een beter idee? Het kan vast beter, maar dit leek mij wel een handige oplossing. Alvast bedankt!

Acties:
  • 0 Henk 'm!

  • Rigi
  • Registratie: September 2001
  • Laatst online: 30-11-2018
gewoon escapen?

code:
1
/(LDK-)+[0-9]{0,4}\/[0-9]{0,4}/


waarom die + trouwens? wil je dingen gaan doen als LDK-LDK-005/009 ?

Acties:
  • 0 Henk 'm!

  • TeeDee
  • Registratie: Februari 2001
  • Nu online

TeeDee

CQB 241

Volgens mij moet je de / nog ergens escapen.

Heart..pumps blood.Has nothing to do with emotion! Bored


Acties:
  • 0 Henk 'm!

  • m33p
  • Registratie: September 2002
  • Laatst online: 20-05 16:58
Die plus is een foutje. Vreemd, ik meen toch stellig dat ik escapen getest heb :S Maargoed, het wekt nu, maar heeft iemand hier ervaringen mee door dit op deze manier te doen? Zijn er betere alternatieven of heeft iemand hier misschien goede ideeën over?

Acties:
  • 0 Henk 'm!

  • Rigi
  • Registratie: September 2001
  • Laatst online: 30-11-2018
Zolang je ze uniek kan houden is er niets aan de hand imho. Maar heb dit nooit zelf geprobeerd, dus kan niets uit ervaring vertellen.

EDIT: Waarom stop je er geen jaartal bij oid? dan heb je geen rare problemen met resetten van die ordernummertjes

[ Voor 32% gewijzigd door Rigi op 13-06-2006 10:50 . Reden: typo ]


Acties:
  • 0 Henk 'm!

  • m33p
  • Registratie: September 2002
  • Laatst online: 20-05 16:58
Denk dat ik dan wel aardig safe zit. Sowieso laat ik het niet meteen automatisch verwerken, eerst handmatig goedkeuren, maar again als het in één keer goed kan, waarom niet ;)

Ik denk dat ik er iets als 'LDK-0004000506' van ga maken. Dan is het ook redelijk makkelijk in te typen. Ik twijfel of ik van 4 cijfers misschien wel naar 3 cijfers kan gaan, dat zou het weer net iets makkelijker maken.

Acties:
  • 0 Henk 'm!

  • Rigi
  • Registratie: September 2001
  • Laatst online: 30-11-2018
Ik zou het dan gewoon LDK-3/5/06 van maken. Daar is je regex op berekend en is nog makkelijker typen :P (dan zou je het zelfs zo kunnen doen: /(LDK-)+[0-9]+\/[0-9]+\/[0-9]{2}/ en dus geen last meer van het '9999-probleem')
Pagina: 1