Beste PHPers,
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??
De tekens erin vormen een regular expression ...
Zie de tuts ...
Het verschil tussen ereg en eregi aan de hand van een voorbeeld :)
<?
# 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?
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 -.