150 likes | 325 Views
Web-programmering. Stringmanipulasjon , RegEx og validering. I dag. Strengmanipulering RegEx Validering Kodegjennomgang Oppgaveløsning på lab. Innebygde stringfunksjoner. $ antall_tegn = strlen ($tekst );. $antall_ord = str_word_count ($tekst);.
E N D
Web-programmering Stringmanipulasjon, RegEx og validering
I dag • Strengmanipulering • RegEx • Validering • Kodegjennomgang • Oppgaveløsning på lab.
Innebygde stringfunksjoner $antall_tegn = strlen($tekst); $antall_ord = str_word_count($tekst); $antall_ord_dag = substr_count($tekst,"dag"); $smaa_bokstaver = strtolower($tekst); $store_bokstaver = strtoupper($tekst); $baklengs = strrev($tekst); $lengde = strlen($tekst);
Innebygde stringfunksjoner forts $tall = strcasecmp($tekst1,$tekst2); Sammenligner tekst1 og tekst2 ikke case sensitivt. Returnerer 0 dersom de er like. Eks: $e-post1 = ”tor.krattebol@iu.hio.no”; $e-post2 = ” Tor.Krattebol@Iu.Hio.no ”; if(!strcasecmp($e-post1,$epost-2) { echo ”Samme epostadresse!”; }
Innebygde stringfunksjoner forts $tekst = nl2br ($tekst); Konverterer \n til <br/>. Brukes når f.eks en fil skal vises på skjermen. Eks: $tekst = ”Dette er første linje\n\r Dette er andre linje”; $resTekst = nl2br($tekst); Dette er første linje<br/>Dette er andre linje
Innebygde stringfunksjoner forts $tekst = strip_tags($tekst); Tar vekk evt. HTML tag’er i en tekst. Eks: $tekst = ”E-post:<a Href=’2.php’>per@hio.no<a/>”; $restekst =strip_tags($tekst); echo $restekst; E-post: per@hio.no
Innebygde stringfunksjoner forts $posisjontekst= strpos($høystakk, $nål); Finner posisjonen i strengen $høystakk der $nål starter. Returnerer FALSE dersom $nål ikke finnes. (Case sensitivt!) Eks: $tekst = ”E-post:<a Href=’2.php’>per@hio.no<a/>”; $pos =strpos($tekst,”Href”); echo $pos; 10
Innebygde stringfunksjoner forts $tekst = str_replace($subTekst,$subTekstTil,$tekst); Bytter $subTekst med $subTekstTil i $tekst dersom denne finnes. Eks: $tekst = ”E-post:<a Href=’2.php’>per@hio.no<a/>”; $resTekst =str_replace(”@”,”(a)”,$tekst); echo $resTekst; Ikke helt riktig da html-tagene ikke vil vises E-post:<a Href=’2.php’>per(a)hio.no<a/>
Innebygde stringfunksjoner forts $tekst = strstr($høystakk, $nål); Returnerer resten av høystakken fra nålen. Eks: $tekst = ”E-post:<a Href=’2.php’>per@hio.no<a/>”; $resTekst =strstr($tekst,”@”); echo $resTekst; @hio.no<a/> Ikke helt riktig da html-tagene ikke vil vises
Innebygde stringfunksjoner forts $tekst = substr($tekst, $start,$lengde); Returnerer resten av $tekst fra startposisjonen $start. $lengde kan sløyfes. Eks: $tekst = ”E-post:<a Href=’2.php’>per@hio.no<a/>”; $resTekst =substr($tekst,23,10); echo $resTekst; per@hio.no
Validering • Må sikre at det som skrives inn i HTML skjema gir mening • F.eks • En alder er større enn null • Et telefonnr består bare av tall • At det er skrevet noe inn i obligatoriske felt • At et kredittkortnr er gyldig • At et navn-felt har maks 20 tegn • At et postnr består av 4 siffer
Validering forts. • Validering bør skje både på kilent og server • Server-validering gjøres i PHP • Klient-validering i Java script (tas senere) • For å sjekke om et felt inneholder noe : • if ($_REQUEST[”navn”]==””) • { • echo ”Navn må oppgis”; • }
Validering med RegEx • For å sjekke at navnet bare inneholder bokstaver og er maks 20 tegn $navn = "Per Hansen"; if(!preg_match(”/^[a-åA-Å]{2,20}$/",$navn)) { echo "Navnet er mellom 2 og 20 tegn og inneholder store og små bokstaver i tillegg til mellomrom"; } else { echo "Navnet er feil"; } Funksjonen ereg kommer til å fases ut av PHP, bruk denne med forsiktighet
RegEx ereg(”regex”,$tekst) • Bruk funksjonen preg_match(”/regex/”,$tekst); • Returnerer true/false • Regex-tegn eks: ^ Start på streng $ Stopp streng [123] Tillat 1 eller 2 eller 3 [1-9] Tillat alle tall mellom 1 og 9 [abAB] Tilllat a eller b eller A eller B [ab][12] Tillat a eller b som første tegn, 1 eller 2 som andre
RegEx forts. /^[1-9][a-å][A-Å]$/ Tre tegn, første 1-9, andre a-å, tredje A-Å /^[1-9a-åA-Å]$/ Ett tegn 1-9 eller a-å eller A-Å /^[1-9a-åA-Å]{5}$/ 5 tegn, vert av dem 1-9 eller a-å eller A-Å /^[1-9a-åA-Å]{2,20}$/ Mellom 2 og 20 tegn (som over) /^[1-9a-åA-Å .]{2,20}$/ Som over inkludert mellomrom og punkt /^[0-9]{4}$/ Norsk postnr /^[0-9]{8}$/ Norsk telefonnr /^[+][4][7][0-9]{8}$/ Norsk telefonnr med + 47 foran /^[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/ Epostadresse /^((4\d{3})|(5[1-5]\d{2})|(6011))-?\d{4}-?\d{4}-?\d{4}|3[4,7][\d\s-]{15}$/ Kredittkort Søk deg frempånettettil mere komplekseRegEx Feks: http://www.regular-expressions.info/examples.html Ett antall ganger