[php] eregi probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • RSD
  • Registratie: Maart 2001
  • Laatst online: 08-02-2017
Ik wil een string matchen alsvolgt:

0,34,12,43,0, ..... , 45

Zeg maar een comma separated string die oneindig lang kan zijn.

Echter mag

12

ook en

3

is ook een match.

Nu had ik zelf dit bedacht:

PHP:
1
eregi("^[0-9][0-9,]*[0-9]$",$_GET["n"]))


deze pakt alleen het enkele getal 3 niet. Hoe kan ik zoiets goed matchen?

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

je moet ervoor zorgen dat het eerste teken ook 0x mag voorkomen, bijvoorbeeld zo:
PHP:
1
eregi("^[0-9]*[0-9,]*[0-9]$",$_GET["n"]))


edit:

hmm, nee want nu kan het nog met een komma beginnen, zo dan:

PHP:
1
eregi("^[^,][0-9,]*[0-9]$",$_GET["n"]))


ongetest

[ Voor 35% gewijzigd door Erkens op 04-07-2007 14:05 ]


Acties:
  • 0 Henk 'm!

  • JeRa
  • Registratie: Juni 2003
  • Laatst online: 30-04 10:28

JeRa

Authentic

Ik denk zoiets:

^([0-9]+,)*[0-9]+$

Maar je kunt natuurlijk ook explode() doen op de string en checken of elk item een getal is :)

ifconfig eth0 down


Acties:
  • 0 Henk 'm!

Verwijderd

Je kunt beter regular expresions vermijden als het mogelijk is, zelf een aantal functies ipv een regexp is al veel sneller.

Performance wise zijn regexps niet erg zuinig.

Acties:
  • 0 Henk 'm!

  • RSD
  • Registratie: Maart 2001
  • Laatst online: 08-02-2017
Hoe zou je zoiets dan doen? Met explode ofzo? Ik dacht juist dat die dingen veel sneller waren?

[ Voor 10% gewijzigd door RSD op 04-07-2007 14:27 ]


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

RSD schreef op woensdag 04 juli 2007 @ 14:27:
Hoe zou je zoiets dan doen? Met explode ofzo? Ik dacht juist dat die dingen veel sneller waren?
Simpel stappenplan:
  • explode op een komma
  • loop door de array die je terug krijgt
  • check of elk item in de array een integer is
Of ze sneller zijn? Dat ligt er helemaal aan wat je er precies mee doet natuurlijk, vaak zijn de complexe regexen sneller dan dat je het zelf met string functies oplost, even niet kijkend naar de development tijd.

Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Ik denk dat 1 keer door een lange string lopen sneller is dan 100 keer een sting te bekijken om te zie of het een integer is

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router

Pagina: 1