eregi()
ik snap de functie eregi of ereg niet zo goed!
ik weet eigenlijk het verschil tussen de 2 zelf niet! :S
maar ik snap al die tekens hier niet in! :S
bijvoorbeeld: ^ en * en $
kan iemand het me misschien uitleggen??
Alvast Bedankt :)
Code (php)
1
2
3
2
3
<?
eregi("^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,4})$", $_POST["email"]);
?>
eregi("^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,4})$", $_POST["email"]);
?>
Zie de tuts ...
Het verschil tussen ereg en eregi aan de hand van een voorbeeld :)
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?
# stel ik heb een zinnetje
$zin = "PHP is kewl";
# als ik nu met ereg wil kijken of PHP erin zit moet ik de hoofdletters PHP typen
ereg("PHP",$zin); // returns true
ereg("php",$zin); // returns false
# maar met eregi maakt dat nix uit , die i staat voor case insensitive dus :
eregi("php",$zin); // returns true
eregi("PHP",$zin); // returns true
?>
# stel ik heb een zinnetje
$zin = "PHP is kewl";
# als ik nu met ereg wil kijken of PHP erin zit moet ik de hoofdletters PHP typen
ereg("PHP",$zin); // returns true
ereg("php",$zin); // returns false
# maar met eregi maakt dat nix uit , die i staat voor case insensitive dus :
eregi("php",$zin); // returns true
eregi("PHP",$zin); // returns true
?>
Snappie?
Gewijzigd op 26/03/2004 18:52:00 door Mitch X
eregi is de hoofdletterongevoelige versie van ereg
thanks arend, foutje ;)
Gewijzigd op 27/03/2004 00:48:00 door Rick
eregi("^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,4})$", $_POST["email"]);
Als we deze eens gaan ontleden:
eerste teken:
^ : dit betekend dat wat hierna komt de eerste caracter van de string moet zijn.
[_a-z0-9-]+: deze verzameling van karakters, 1 of meerdere keren
(Tussen haakjes: een 'group', dit kan later gebruikt worden om weer terug te halen)
(
. : matched elk teken.
[_a-z0-9-]+ : weer 1 of meerdere keren.
)* : wat er tussen de haakjes stond 0 of meerdere keren herhalen.
@: apenstaartje:
[a-z0-9-]+: een (sub)domeinnaam
(.[a-z0-9-]+)*: meerdere, eventueel.
(.[a-z]{2,4})$: en aan het eind (de $ staat voor dat het aan het eind moet staan), een domeinnaam-extensie van 2 tot 4 letter tekens.
Wat er niet klopt:
Er worden letterlijke (niet escaped: \.) punten gebruikt. In regex staat een . voor elk willekeurig teken.
Dit betekend dat met deze regex adje@adje is vet stoer com
(Ja, spaties!) OOK als geldig email adres wordt gezien. Beetje kut dus. Ook mag een email adres niet beginnen met een _ of een -.
eregi("^[a-z0-9\]+([_a-z0-9\-]+)*\@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $_POST["email"]);
Is al een betere regex. Je kan deze zo complex maken als je wil, de officiele regels zijn nog iets uitgebreider voor een mail adres.
Wat zou ik kunnen gebruiken voor het volgende?:
Ik heb een textveld met een naam.
Daar mogen alleen letters ingevoerd worden.
Hoe los je dit met ereg(i) op?
eregi ("^[a-z]+[a-z]*+[a-z]$",$POST_[naam] ");
Volgensmij zoiets:
^ = MOET beginnen met...
a t/m z ....
dan misschien meerdere malen
a t/m z
en het MOET eindigen met ..
a t/m z
Succes.
Adjes uitleg ++
Late aad.. komt ie drie maanden later nog eens aankakken :)