login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Special chars. Detecteren. (Opgelost)

Offline Wouser - 03/11/2007 23:02
Avatar van WouserPHP interesse Hallo,

Ik wil graag speciale characters detecteren in een string. Namelijk het is niet de bedoeling dat leden een naam kunnen krijgen met, ~!@#$%^&*()+={}\|"'?/;:.,<>`[] erin. Enigste twee die dus wel mogen zijn dus _ en -

Ik had zelf deze code:
  1. ereg('(!)(@)(#)($)(%)(^)(&)(*)(\()(\))(~)', $string)

Maar hier moet toch een veel betere manier voor zijn toch?

8 antwoorden

Gesponsorde links
Offline Joel - 03/11/2007 23:05
Avatar van Joel Eigenaar
  1. ereg("^[a-zA-Z0-9_-]{0,20}$", $string);
Offline vinTage - 03/11/2007 23:08
Avatar van vinTage Nieuw lid Die {20} is niet nodig 
Offline Joel - 03/11/2007 23:10 (laatste wijziging 03/11/2007 23:11)
Avatar van Joel Eigenaar Dat is een extra mogelijkheid om aan te geven hoeveel karakters minimum en maximum Als je vb tussen de 5 en 10 karakters wilt, verander je dat naar {5,10}
Offline Grayen - 03/11/2007 23:13 (laatste wijziging 03/11/2007 23:16)
Avatar van Grayen PHP ver gevorderde @ Joel
Opzich wel handig, maar dat is niet hetgeen wat hij wilt, hij wilt alleen controleren of de string geen vreemde tekens bevat, dus ik zou aanraden om het + teken te gebruiken, die staat voor één of meer tekens.

Ik zou gebruiken maken van preg_match omdat deze veel sneller is als ereg.

  1. preg_match('/[a-z0-9_\-]+/i', $string);
Offline Wouser - 03/11/2007 23:15 (laatste wijziging 03/11/2007 23:15)
Avatar van Wouser PHP interesse Ik heb dit nu...

Alleen bij $_POST['name'] = 'Wouser' of bij $_POST['name'] = 'Wouser^' laat hij die ook door... en tussen waar en nietwaar is geen verschil dus :+

  1. if (!isset($_POST['name']))
  2. {
  3. $error[] = 'You need to fill in your username.';
  4. }
  5. else if (strlen($_POST['name']) > 25)
  6. {
  7. $error[] = 'You filled in to many characters for your username.';
  8. }
  9. else if (!ereg("^[a-zA-Z0-9_-]{0,20}$", $_POST['name']))
  10. {
  11. $error[] = 'Your username may not contain special characters.';
  12. }
  13.  
  14. if (count($error))
  15. {
  16. print_r($error);
  17. }
Offline vinTage - 03/11/2007 23:17
Avatar van vinTage Nieuw lid
  1. elseif(!preg_match('~^[a-z0-9][\w-]+$~i', $_POST['name'])) {
  2. $error[] = 'De gebruikersnaam mag alleen letters, cijfers, underscores en deelstreepjes bevatten en moet uit minimaal 2 karakters bestaan.';
  3. }
Offline Grayen - 03/11/2007 23:19 (laatste wijziging 03/11/2007 23:19)
Avatar van Grayen PHP ver gevorderde Probeer dit eens:

  1. <?php
  2. if (!isset($_POST['name']))
  3. {
  4. $error[] = 'You need to fill in your username.';
  5. }
  6. else if (strlen($_POST['name']) > 25)
  7. {
  8. $error[] = 'You filled in to many characters for your username.';
  9. }
  10. else if (!preg_match('/^[a-z0-9_\-]+$/i', $_POST['name']))
  11. {
  12. $error[] = 'Your username may not contain special characters.';
  13. }
  14.  
  15. if (count($error) > 0)
  16. {
  17. print_r($error);
  18. }
  19. ?>
Offline Wouser - 03/11/2007 23:28
Avatar van Wouser PHP interesse Yup werkt nu! Bedankt iedereen 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.232s