Det har kommit upp några frågor om hur man kan kolla om ett lösenord bara innehåller siffor och bokstäver, eller hur man kollar om en e-postadress är korrekt. Det bästa sättet tycker jag är att lära sig “regular expressions”. PHP stöder två typer av “regular expression”.
När man skall jobba med “regular expression” i PHP så tycker jag att man skall jobba med preg funktioner. De är för det mesta dubbelt så snabba och klarar av mer avancerade saker, dessutom verkar det som om ereg är på väg bort från PHP. Kan idag inte komma på någon anledning att använda ereg funktionerna.
Läs mer om preg-funktoner och om syntax.
$preg = "/exempel/"; // Avgränsare får inte vara alphanumeric eller backslash... Allt annat verkar funka! $string = "Några lätta exempel för att komma igång."; if (preg_match($preg, $string)) { echo "Success: '$preg' matchar '$string'<br>"; } else { echo "Error: '$preg' matchar inte '$string'<br>"; } // Skriver ut : Success: '/exempel/' matchar 'Några lätta exempel för att komma igång.' // Sen när man kan "regular expression" så är kan man även använda preg_replace... $string = preg_replace ($preg, 'saker', $string); echo "'$string'<br>"; // Skriver ut: 'Några lätta saker för att komma igång.' /* Om man vill göra lite krångligare saker så måste man känna till lite mer. ^ - används för start $ - används för slut . - betyder valfritt tecken, vill man ha just en . använd \. Använd \ för alla dessa tecken: \ ^ . $ | ( ) [ ] * + ? { } , * - 0 eller fler tecken + - 1 eller fler tecken ? - 0 eller ett tecken {3} - 3 tecken {3,} - Minst 3 tecken {3,6} 3 till 6 tecken (hej) - en sekvens ex: (hej){1,3} matchar hej, hejhej, hejhejhej | - Funkar som or ex: "(b|cd)ef": matchar "bef" eller "cdef". [] Godkänner allt inom [] som match. ex: [abc] matchar a, b eller c, [abc] är samma sak som (a|b|c) [0-9] - Matchar en siffra [a-z] - Matchar en bokstav mellan a till z [a-zåäö] - Matchar våra svenska små bokstäver [0-9a-zA-ZåäöÅÄÖ] - Matchar siffor och våra svenska bokstäver, både stora och små. ^ - kan också betyda inte ex: "/^[^abc]*$/" matchar så länge inget av a, b eller c är med Sen är det bara att kombinera alla saker ovan så kommer du nog att kunna matcha det mesta ;-) */ // och nu något man kan ha nytta av... $preg = "/http:\/\/([0-9a-z-\._]*)/"; $string = "En länk till Parkskolans hemsida (http://www.park.se) som vi vill göra klickbar!"; $replace = '<a href="http://$1">$1</a>'; echo preg_replace ($preg, $replace, $string); // Skriver ut: En länk till Parkskolans hemsida (<a href="http://www.park.se">www.park.se</a>) som vi vill göra klickbar! // och allra sist något man troligen inte har nytta av ;-) $preg = "/.*(Ett).*(hej).*(hå).*/"; $string = "Hå och hej, Ett hej och hå, hej säg så"; $replace = "$1 $3 och $2"; echo preg_replace ($preg, $replace, $string); // Skriver ut: Ett hå och hej