preg_match regulært udtryk
Hejsa.Jeg har fundet denne stump kode, som skal verficere om en given e-mail adresse er opbygget som en e-mail adresse bør være. Men den returnerer en fejl, hvis e-mailen indeholder en bindestreg: -. Og det burde den jo ikke gøre.
function verify_addr ($address) {
$return = false;
if (preg_match ('/^[\w.]+@([\w.]+)\.[a-z]{2,6}$/i', $address, $domain)) {
$domain = explode ('.', $domain[0]);
// Split the domain into sections wherein the last element is either 'co', 'org', or the likes, or the primary domain name
foreach ($domain as $part) { // Iterate through the parts
if (substr ($part, 0, 1) == '_' || substr ($part, strlen ($part) - 1, 1) == '_')
$return = false; // The first or last character is _
else
$return = true; // The parts are fine. The address seems syntactically valid
}
}
return $return;
}
Kan nogen hjælpe med at rette i kodestumpen, så den duer 100%?
Tillægsspørgsmål: Jeg vil gerne have en bedre forståelse for hvordan man opbygger regulære udtryk i php. Kan nogen henvise til et sted, hvor det bliver forklaret på en forståelig måde?
