Differences
This shows you the differences between two versions of the page.
preg_match [2017-09-01 14:54] |
preg_match [2022-07-18 13:20] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== PHP:s " | ||
+ | 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 " | ||
+ | * preg - som är en PHP wrapper av PCRE library (Perl-Compatible Regular Expressions). | ||
+ | * ereg - som bygger på POSIX Extended Regular Expressions från 1986, det har hänt mycket sen dess. | ||
+ | |||
+ | == ereg vs preg == | ||
+ | När man skall jobba med " | ||
+ | |||
+ | Läs mer om [[http:// | ||
+ | |||
+ | == Bra sida att testa på == | ||
+ | [[https:// | ||
+ | |||
+ | == Några lätta exempel för att komma igång. == | ||
+ | <code php> | ||
+ | $preg = "/ | ||
+ | $string = " | ||
+ | if (preg_match($preg, | ||
+ | echo " | ||
+ | } else { | ||
+ | echo " | ||
+ | } | ||
+ | // Skriver ut : Success: '/ | ||
+ | |||
+ | // Sen när man kan " | ||
+ | $string = preg_replace ($preg, ' | ||
+ | echo "' | ||
+ | // Skriver ut: ' | ||
+ | |||
+ | |||
+ | /* | ||
+ | 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: " | ||
+ | |||
+ | [] 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: "/ | ||
+ | |||
+ | 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 = "/ | ||
+ | $string = "En länk till Parkskolans hemsida (http:// | ||
+ | $replace = '<a href=" | ||
+ | echo preg_replace ($preg, $replace, $string); | ||
+ | // Skriver ut: En länk till Parkskolans hemsida (<a href=" | ||
+ | |||
+ | // och allra sist något man troligen inte har nytta av ;-) | ||
+ | $preg = "/ | ||
+ | $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 | ||
+ | </ | ||
+ | |||
+ | == Nu skall ni skriva några " | ||
+ | - Bara små bokstäver (a-z) och 4-6 tecken. | ||
+ | - Bara små bokstäver a-z och siffror, dock minst 8 tecken. | ||
+ | - Ett heltal mellan 0-999. | ||
+ | - En korrekt E-post adress. (Jag tycker att en korrekt e-post adress bara får innehålla a-z,0-9 punkt(.), underline(_) och tankesträck(-) före @ och efter bara a-z,0-9 punkt(.) och tankesträck(-) fastän RFC:n tillåter fler tecken...) | ||
+ | - Ett heltal mellan 0-255. | ||
+ | - Datum på formen yyyy-mm-dd mellan 1900-01-01 och 2099-12-31, det är ok att alla månader kan ha 31 dagar... | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | <php> | ||
+ | |||
+ | // 1. $preg = "/ | ||
+ | // 2. $preg = "/ | ||
+ | // 3. $preg = "/ | ||
+ | // 4. $preg = "/ | ||
+ | // 5. $preg = "/ | ||
+ | // 6. $preg = "/ | ||
+ | |||
+ | // rename -vn ' | ||
+ | // rename -vn ' | ||
+ | // | ||
+ | /* | ||
+ | Ex när man kan ha nytta av att kunna regexp\\ | ||
+ | 1. Här finns en {{: | ||
+ | 2. Du har 9 filer som heter fil1.txt, fil2.txt, .., fil9.txt (tips rename s/ | ||
+ | a. Du skall byta namn på dessa till kalle1.txt, | ||
+ | b. Du skall byta namn på dessa till fil_Nummer_1.bak, | ||
+ | |||
+ | */ | ||
+ | </ | ||