Gjest dr. ian Skrevet 28. august 2002 #1 Del Skrevet 28. august 2002 Hva i alle er et array? Og hva er en string? Ikke noe med undertøy, i alle fall Hvis vi bruker noe vi har vært borti før, slik som en verdi: $my_value = "Heisann montebello!"; Dette er en string. En string er en klump med tekst, rett og slett. Heisann montebello! som nå er lagret i verdien $my_value er en klump med tekst, og hvis du echo'er denne verdien, vil siden skrive ut Heisann montebello! Når vi lagrer noe, enten det er i en tekstfil eller database, må teksten være som en string, dvs. som en klump med tekst. Men vi kan lagre flere verdier i samme string, ved å gjøre det på en spesiell måte. La oss si at du trenger å lagre noen data om en bruker. Dette vil du gjøre på en linje i en tekstfil på serveren. Feltene som skal lagres er brukernavn, passord og brukerstatus. Dette gir deg tre felter som du må lagre. Vi skal ta filbehandling senere, men la oss bare tenke oss at vi har en form som sender disse tre feltene til scriptet, $username, $password og $userstatus. Det vi vil at scriptet skal gjøre, er å gjøre om disse tre datafeltene til ett, slik at man kan lagre det. <?PHP $username = $HTTP_POST_VARS['username']; $password = $HTTP_POST_VARS['password']; $userstatus = "Moderator"; $string_to_file = "$username,$password,$userstatus"; ?> <html> <head> <title>Vår lille testside</title> </head> <body> <?PHP echo "<h2>Dette er en string: $string_to_file</h2>"; ?> <form method="post" action="liten_string.php"> <input type="text" name="username" value="" size="15" maxlength="15"><br> <input type="password" name="password" value="" size="15" maxlength="15"><br> <input type="submit" name="submit" value="Post!"> </form> </body> </html> Legg merke til at det bare er brukernavn og passord som postes til scriptet, brukerstatus ligger skrevet inn i koden, slik at ikke brukeren kan manipulere den (den ville neppe vært moderator hvis dette var et registreringsskjema ) Så når man poster registreringen blir den til en tekstklump som kan skrives til en fil. Du kan teste her: http://home.no.net/dorian/phpkurs/liten_string.php Når stringen er skrevet til en fil kan det jo hende vi vil åpne den igjen, og hente ut dataene enkeltvis? La oss si at vi har åpnet filen, og lest den. Da sitter vi igjen med en string slik den var da den ble lagret: $string_from_file = "Ole-petter,storepupper2002,Moderator"; Dette er verdien, og nå skal vi splitte den opp. Dette gjøres med en funksjon som kalles explode() Funksjoner er et omfattende emne og må få en egen tråd, men hvis vi skal kjøre explode() for å splitte opp $string_from_file må vi gjøre slik: $string_from_file = explode("," , $string_from_file) $username = $string_from_file[0]; $password = $string_from_file[1]; $userstatus = $string_from_file[2]; Det vi har gjort her, er å si til php: Finn alle kommaer i setningen, og splitt den opp etter kommaene. Komma er i denne sammeheng brukt som delimiter, dvs. som en separator mellom feltene. Man trenger ikke bruke komma som separator, man kan bruke tegn som ] eller ; eller * Men det er viktig at ikke noen av feltene inneholder samme tegn som er brukt som separator - ellers vil man få feil (f.eks hvis brukernavnet i tilfellet ovenfor var Ole, Petter). Oversatt ser explode slik ut: splittet verdi = explode("tegn det skal splittes med", verdi som skal splittes) Verdiene som er splittet kan nå nåes ved å henvise til nummeret til den verdien, regnet fra venstre (begynner alltid med 0) inni firkant-paranteser: $username = $string_from_file[0]; $string_from_file er nå et array, og et array er flere små klumper med tekst. OBS: Kommaene som er brukt som separator forsvinner når du har explode't stringen. Nerdian Lenke til kommentar Del på andre sider Flere delingsvalg…
Gjest dr. ian Skrevet 28. august 2002 #2 Del Skrevet 28. august 2002 Mere string'er Denne postingen lister flere funksjoner, noe som jeg egentlig har tenkt til å komme tilbake til senere (når været blir penere), men siden vi har sagt string får vi si...æh...funksjon. Dette er noen innebygde funksjoner som ligger i php for tekstmanipulering (=stringmanipulering): Sjekk hvor mange tegn en string inneholder: strlen($string) Eksempel: $jadda = "Næmmenjassådagitt!!!"; $lenght = strlen($jadda); echo $lenght; Eksemplet vil skrive tallet 20 Klipp ut litt av stringen, basert på antall tegn: substr($string, fra tegn, til tegn) Eksempel: $jadda = "Næmmenjassådagitt!!!"; $sub = substr($jadda, 0, 5); echo $sub; Eksemplet vil skrive Næmmen, siden det begynner på tegn 0 (fra venstre) som er N og slutter på tegn 5 som er neste n før jasså. Et eksempel til på denne: $jadda = "Næmmenjassådagitt!!!"; $sub = substr($jadda, 6, 10); echo $sub; Dette eksemplet vil skrive jasså, siden den klipper ut tegnene 6 til 10. (alt dette forutsatt at jeg har telt riktig, selvfølgelig ) Finn første tillfelle av et tegn i en string: strpos($string, "tegn") Eksempel: $jadda = "Næmmenjassådagitt!!!"; $where = strpos($jadda, "m"); echo $where; Eksemplet vil skrive ut tallet 2, siden posisjonen til den første m'en er 3 tegn fra venstre (man begynner med 0, ikke 1 - N er altså 0) Nesten lik er strrpos, som spør etter det siste tilfellet av et tegn i en string: strrpos($string, "tegn") Eksempel: $jadda = "Næmmenjassådagitt!!!"; $where = strrpos($jadda, "d"); echo $where; Eksemplet vil skrive ut tallet 8, siden posisjonen til d er 8 tegn fra høyre (man begynner med 0, ikke 1 - det første utropstegnet er altså tegn 0) Dette kan jo virke som noe skikkelig pirk, men er faktisk ganske nyttig. Her er flere av disse funksjonene brukt til å manipulere stringen $datext, som er artikkeltext som brukeren kan poste på en webside. Målet med manipuleringen er å hente ut litt av teksten (fra tegn 0 til tegn 320), finne det første punktum regnet bakfra, klippe bort det som kommer etter dette punktumet (og punktumet) og legge til et punktum til slutt. Vitsen? Jo, det er å vise litt av artikkelteksten som en ingress, og da vil man jo gjerne slutte med punktum og greier? Så denne lager en snerten liten ingress av greia # Først henter vi ut begynnelsen av teksten # $datext = substr($datext, 0, 320); # Så finner vi det siste punktumet # $pos = strrpos($datext, "."); # Hvis den ikke finner noe punktum, se etter utropstegn i stedet # if ($pos == "") { $pos = strrpos($datext, "!"); $repl = "!"; } else { $repl = "."; } # Her henter vi ut den nye teksten fra tegn 0 og frem til det siste punktumet/utropstegnet (og legger på punktum/utropstegn etter) # $datext = substr($datext, 0, $pos) . "$repl"; # Ferdig - spytt ut! # echo $datext; Hei hvor det går! dorian Lenke til kommentar Del på andre sider Flere delingsvalg…
Gjest Cabron Skrevet 28. august 2002 #3 Del Skrevet 28. august 2002 Heisann:) Kult med litt gratis PHP undervisning... hehe Jeg henger heldigvis med på notene ennå, siden det tross alt er utrolig likt VBscript inntil nå, så bare kjør på Doris Cabron (som tror det er på tide å gi seg når matrisene blir i 4-dimensjoner.... hehe) Lenke til kommentar Del på andre sider Flere delingsvalg…
Gjest dr. ian Skrevet 28. august 2002 #4 Del Skrevet 28. august 2002 Ja, er det det? Har ikke peiling på vb-script, men har hørt at det er ganske sammenlignbart med php. dorian Lenke til kommentar Del på andre sider Flere delingsvalg…
@lfa Skrevet 29. august 2002 #5 Del Skrevet 29. august 2002 Du er vel ikke en kløpper i C++ også, vel? :blunke: Lenke til kommentar Del på andre sider Flere delingsvalg…
Gjest doriansen Skrevet 29. august 2002 #6 Del Skrevet 29. august 2002 @lfa: Regner med at den var til Cabron, siden du vet at jeg ikke er en kløpper i C? Men egentlig skulle jeg bare rette litt på en ting: substr er ikke substr($string, fra tegn, til tegn) men substr($string, fra tegn, lengde) dvs. det første tallet setter start, det andre tallet setter lengde fra start til der man vil slutte... doris Lenke til kommentar Del på andre sider Flere delingsvalg…
@lfa Skrevet 29. august 2002 #7 Del Skrevet 29. august 2002 Dortine eller Cabrio...... samma det, så lenge jeg finner noen som er kløpper i C++..... Lenke til kommentar Del på andre sider Flere delingsvalg…
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå