login  Naam:   Wachtwoord: 
Registreer je!
 Scripts:

Scripts > PHP > Reguliere expressies > Basiscontroles met regular expressions

Basiscontroles met regular expressions

Auteur: Twopeak - 26 augustus 2004 - 14:21 - Gekeurd door: Dennisvb - Hits: 10530 - Aantal punten: 4.50 (2 stemmen)




Commentaar staat in script.

Het is meer om van te leren, dan echt te copy pasten!

Ik speel met de gedachte om een php script te maken dat voor jou een regular expression maakt...

Code:
  1. <?
  2. //eventjes duidelijk zeggen, check_email gebruik ik zelf, en werkt 99% vd tijd (er zijn nog adressen die niet ok zijn
  3. //check_url is nooit getest geweest
  4. //check_date komt letterlijk uit de php handboek, zal het morgen performanter maken!
  5.  
  6.  
  7. function check_email($string) {
  8. $check_email = "/^([a-z0-9_-]+.)*?[a-z0-9_-]+@([a-z0-9-_]{2,}).[a-z0-9-_]*(.[a-z0-9- _]{2,})*$/i";
  9. if (preg_match($check_email,$string)) {
  10. return true;
  11. } else {
  12. return false;
  13. }
  14. }
  15. /*
  16. UITLEG:
  17. /^([a-z0-9_-]+.)*?[a-z0-9_-]+@([a-z0-9-_]*).[a-z0-9-_]*(.[a-z0-9- _]{2,})*$/i
  18. ^ betekent begin van een string, indien ik dit er niet bijzet kan men er een woord voorplaatsen
  19. een aantal karakters (a-z en 0-9 en underscore en een minteken
  20. dan een punt (met de escape backslash ervoor!)
  21. dan een * en een vraagteken, betekenend dat dit meerdere keren kan voorkomen, maar dat het optioneel is!
  22. dan een verplichte reeks van letters, getallen underscore of mintekens
  23. dan een @
  24. dan weer karakters, onbepaald hoeveel
  25. dan weer een punt
  26. dan nog wat rommel, zal morgen wel verder uitleggen, ik zie scheel op die regexp!
  27.  
  28. */
  29.  
  30. function check_url($string) {
  31. $check_url = "/^(http)+(s)?+(://)+[:alpha:]*+(.)?+[:alnum:]*+(.){1}[:alfa:]{2,3}+/+([:punct:]||[:alnum:])+(.)(htm||php||html||asp)$/i";
  32. if (preg_match(,$string)) {
  33. return true;
  34. } else {
  35. return false;
  36. }
  37. }
  38. /*
  39. UITLEG:
  40. /^(http)+(s)?+(://)+[:alpha:]*+(.)?+[:alnum:]*+(.)+[:alfa:]{2,3}+/+([:punct:]||[:alnum:])+(.)(htm||php||html||asp)$/i
  41. ^ betekent begin van een string, indien ik dit er niet bijzet kan men er een woord voorplaatsen
  42. (http) vooraan staat er altijd http, tussenhaakjes omdat het duidelijker is om dat te groeperen ipv h+t+t+p+:+/+/
  43. s? (of (s)?) betekend dat er één of geen letter s kan staan
  44. :// logisch
  45. + om strings samen te voegen
  46. [:alpha:] alfanumeriek teken (letters, en cijfers, hoofd-en kleine letters
  47. * om aante geven dat het er meer dan 1 is (* = onbepaald aantal tekens)
  48. (.) aangezien een punt gebruikt word voor regular expressions, moet ik het punt escapen met een backslash
  49. ? omdat er niet altijd een subdomein staat, dus dat punt MOET er niet staan (er is een klein risico dat dit script niet werkt voor http://a.com/ of dergelijke
  50. weer alfanumerieke tekens (dit keer mogen er ook nummers in staan, OPGEPAST! er kan dus geen - in staan, en sommige domeinen hebben dat WEL!
  51. weer lettertekens
  52. {2,3} betekent twee of drie karakters, du extensie is altijd twee of drie karakters (tegenwoordig is er .shop en dergelijke bijgekomen, daarop crasht deze re!
  53. dan een /
  54. dan OFWEL een punctuatie teken (punt komma minteken platte streep, tilde) OFWEL alfanumerieke karakters (alle subdirs zitten hierin vervat!)
  55. dan weer een . (de naam vh bestand zit id vorige opdracht)
  56. en nu de extensie
  57. $ om de string te beindigen
  58. en de i om te zeggen dat het gn verschil maakt of het lower of uppercase is
  59.  
  60. */
  61.  
  62.  
  63. $datumregexp =" ^[0-9]{1,2}+(-||/|| ){1}+[0-9]{1,2}+(-||/|| ){1}+[0- 9]{2,4}$" ;
  64. function check_date($string) {
  65. if (($timestamp = strtotime($str)) === -1) && (preg_match($datumregexp,$string) {
  66. return false;
  67. } else {
  68. return true;
  69. }
  70. }
  71.  
  72. /*
  73. dees function kijkt of de datum in xx/xx/xxx past (de / kan ook - zijn)
  74. EN of het een geldige datum is! (dus 99/99/0000 zal niet ok geven)
  75. 21 february 2000 zal ook niet ok zijn! Als je dat wel wilt, moet je gewoon de regexp. weglaten!
  76. */
  77.  
  78. ?>
Download code! Download code (.txt)

 Stemmen
Niet ingelogd.

 Reacties
Post een reactie
Lees de reacties (1)
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.018s