login  Naam:   Wachtwoord: 
Registreer je!
 Forum

spatie in preg_match (Opgelost)

Offline Martijn - 03/08/2008 17:30
Avatar van MartijnCrew PHP ik heb deze regel:
  1. elseif(!preg_match('/^[A-Za-z0-9_]$/', $_POST['naam'])){echo "Je hebt een ongeldig teken in je naam! je mag alleen letters, cijfers en ' _ '!";}

Het was de bedoeling dat dat ook anti spatie was , maar dat kan dus nog. Iemand die weet hoe t moet?

6 antwoorden

Gesponsorde links
Offline Rik - 03/08/2008 19:04
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Gewoon een spatie in je regex erbij zetten? 
Offline Martijn - 04/08/2008 11:53
Avatar van Martijn Crew PHP waar dan? ik ben niet zo;n held met preg_match, maar zoals ik m nu snap heb ik neergezet dat alleen letters, cijfers en _ kan..., want dat staat tussen die haakjes
Offline Rik - 04/08/2008 13:56
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Tussen de [ en de ] (in de character class zoals dat heet) moet je die spatie er dan bij zetten.
Offline Martijn - 04/08/2008 14:08 (laatste wijziging 04/08/2008 14:10)
Avatar van Martijn Crew PHP ja maar dan mag een spatie toch juist wel? ik wil dat ie t niet toestaat

edit: magisch doet ie t nu wel =/ en zonder de spatie

edit over oplossing: het hierboven was niet de oplossing, maar met de meeste info
Offline Joost - 04/08/2008 14:10
Avatar van Joost PHP expert
  1. if(!ereg('^[A-Za-z0-9-]+$', $user)) {
  2. $fouten[] = "Ongeldige tekens in de Gebruikersnaam!";
  3. }


Die heb ik, en die werkt.
Je zou dan wel dat streepje moeten vervangen door een _ .
Offline Rik - 04/08/2008 14:23
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
In plaats van a-z0-9 kun je ook \w gebruiken. Als je de i als pattern modefier gebruikt dan hoef je A-Z er niet bij te zetten omdat je regex dan hoofdletterongevoelig wordt. Zie: http://php.net/...ifiers.php

Achter de character class zou je een + of een * moeten zetten omdat je wilt dat de hele naam uit de tekens bestaat die je opgeeft, anders laat hij namen met meer dan een teken ook niet door.

In plaats van kijken of de hele naam uit bepaalde tekens bestaat kun je efficiënter kijken of er (minstens) een verboden teken in zit:
  1. if (preg_match('/[^\w ]/', $_POST['naam'])) {
  2. // verboden!
  3. }
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.182s