Laboration 1: Arbeta med formulär och strängarhantering



Relevanta dokument
Labora&on 7 Syfte med laborationen:

Användarhandledning Version 1.2

STRÄNGAR DATATYPEN. Om du vill baka in variabler eller escape-tecken måste du använda dubbla citattecken. strängar

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php

Karlstads Universitet, Datavetenskap 1

Medieteknologi Webbprogrammering och databaser MEB725, 5p (7,5 ECTS) Klientprogrammering JavaScript Program på flera sidor

1. Gå till redigeringsläge i Episerver, klicka på den sida som du vill ha ett formulär på. 2. Klicka på fliken Formulär.

Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet

Laboration 1 Introduktion till Visual Basic 6.0

Avancerade Webbteknologier

Introducerande övningar i HTML

Översikt. Installation av EasyPHP 1. Ladda ner från Jag använder Release Installera EasyPHP.

Databaser på webben. Revision Johan Näsholm, johan@nasholm.com

Exempel: Exempel: Exempel: Exempel: $djur=array("ko","katt","älg"); foreach ($djur as $d) { echo $d. " "; } Resultat. ko katt älg

Introduktion HTML och PHP 732G16 Databaser design och programmering

L04.1 Marodören. Inledning. Mål. Genomförande. Uppgift 1 Hello World. Moment I

Webbprogrammering - 725G54 PHP. Foreläsning II

Innehåll. PHP Grundkurs. Introduktion till PHP. Kurslitteratur. Webbserver. Lite historik. PHP Grundkurs 1

Introduktion till PHP

Introduktion till användning av linux-servern sledge och några övningsuppgifter

Du skall naturligtvis visa körexempel med output där det behövs i din rapport!

Lektion 5 HTML, CSS, PHP och MySQL

Programmeringteknik. Planering MÅL LABB: MOMENT LAB4 HTML - EXEMPEL HTML. Webbdelen

Introduktion Schenker-BTL AB, Stab IT Beskrivning över informationsintegreringmed Schenker, metodbeskrivning version 1.

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Laboration 1 - Grunderna för OOP i Java

Elektronisk publicering TNMK30

KARLSTADS UNIVERSITET 12/8/09 informatik & datavetenskap Johan Öfverberg, Kerstin Andersson Laboration 4, ISG A04 och DVG A08 HT-09

Laboration 6 Formulär och stränghantering övningar/uppgifter

JavaScript del 2 DocumentWrite, Prompt och ParseInt

Textsträngar och formulär i JavaScript

C++ Lektion Tecken och teckenfält

Webbsidor och webbservrar

Labora&on 8 Formulär övningar/uppgi6er

Webbprogrammering. Sahand Sadjadee

FrontPage Express. Ämne: Datorkunskap (Internet) Handledare: Thomas Granhäll

Ikon Menyalternativ Funktion och beskrivning Sök och ersätt text i arbetsfältet. Ramformatering

Visual Basic, en snabbgenomgång

WEBBUTVECKLING Kursplanering

Labora&on 2 Funk&oner, if och loop övningar/uppgi:er

DOM (Document Object Model) är modellen efter vilken en webbläsaren är uppbyggd. Alla objekt/element i webbläsaren finns hierarkiskt ordnade i DOM.

Webbprogrammering. Introduktion till PHP. Christian Ohlsson

Övning (X)HTML 2. Sidan 1 av

PHP. TNMK30 - Elektronisk publicering

F06 A table form Dagens agenda

Datorlära 6. Arbeta med strängar Inmatning med tangentbordet Bygga ett program med inmatning, funktioner, osv

1 Texthantering. 1.1 Typen char. Exempel, skriv ut alfabetet

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Dags att skriva uppsats?

Ersätta text, specialtecken och formatering

Icarus - Enkelt Skript. Manual revision 1.2, Keylogic AB.

TUTORIAL: KLASSER & OBJEKT

Övningar i JavaScript del 4

I den tidigare filen Manual Editor belystes grunderna för enkel uppdatering samt editorns utformning.

Manual E-butiken Innehåll:

SORSELE KOMMUN. Handbok OEW. 28 sept 2012 Mari-Anne Englund Barbro Olofsson. Sorsele kommun Version , rev (19)

teknisk manual Direktbetalning handelsbanken.se/e-handel

PHP. Dynamiska webbsidor

Att förstå hur man konstruerar modulära program Att kunna skapa nya funktioner Att förstå hur data skickas mellan funktioner

Chapter 3: Using Classes and Objects

TDIU01 - Programmering i C++, grundkurs

Extramaterial till Matematik Y

Att hämta organisationers publikationsposter ur DiVA

Agenda. Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer. Övningar nu och då

Snabbguide för E-lomake

TNMK30 Elektronisk publicering HT 2014 Laboration 5: PHP och MySQL

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Appar med ryggrad. Introduktion till JavaScriptramverket Backbone

MMA132: Laboration 2 Matriser i MATLAB

Datorlära 3 Octave Workspace ovh mijlö Skriva text på skärmen Värdesiffror Variabler och typer Strängar Makro Vektorer

Inledning till OpenOffice Calculator Datorlära 2 FK2005

Laboration A Objektsamlingar

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

Objektorienterad Programmering (TDDC77)

Dokumentmallar i praktiken, Nyps

Extramaterial till Matematik Y

En grundkurs i hemsidor och hur de är uppbyggda

Enkla datatyper minne

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

Datorövning 1 Calc i OpenOffice 1

Linjär algebra med tillämpningar, lab 1

[] Arrayer = Indexerad variabel

Lathund Elektronisk fakturahantering

Att arbeta med. Müfit Kiper

Kort om klasser och objekt En introduktion till GUI-programmering i Java

Webbplatsen för ME Control

F02 En första sida. Dagens agenda

Handledningsmaterial Visio 2010

JavaScript del 5 Funktioner

Labora&on 1 Variabler och beräkningar övningar/uppgi9er

Objektorienterad programmering Föreläsning 2

Manual Webb-admin för evenemang

Introduktion till integrering av Schenkers e-tjänster. Version 2.0

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Användarmanual Körjournal för iphone

Transkript:

Laboration 1: Arbeta med formulär och strängarhantering From Webbapplikationer Contents 1 Läsanvisningar 2 DEL 1 2.1 Övning 1.1 2.1.1 Svara på följande frågor: 2.2 Övning 1.2 2.3 Övning 1.3 2.3.1 Svara på följande frågor 2.4 Övning 1.4 2.4.1 Svara på följande frågor 2.5 Redovisning del 1 3 DEL 2 3.1 Konstanter och vektorer 3.1.1 Definiera en konstant 3.1.2 Fördefinierade konstanter 3.2 Stränghantering 3.2.1 Returnera ett tecken 3.2.2 Dela upp en sträng i flera delar i form av en array 3.2.3 Ta bort blanksteg i början av en sträng 3.3 Övning 2.1 3.4 Övning 2.2 3.5 Övning 2.3 3.5.1 Fråga 3.6 Övning 2.4 3.6.1 Frågor 3.7 Övning 2.5 3.7.1 Fler strängfunktioner 3.7.2 Svara på följande frågor: 3.8 Övning 2.6 3.8.1 Övning - spaltbredd, radbrytningar och specialtecken för html 3.8.2 Spalt 3.8.3 Radbryningar 3.8.4 Specialtecken 3.9 Övning 2.7 3.10 Redovisning del 2 Läsanvisningar Läsanvisningar för lab 1 Eriksson, Overgaard, Ek: * Kapitel 2 - Grunderna i PHP * Kapitel 3 - Styrstrukturer * Kapitel 4 - Formulär * Kapitel 5 - Stränghantering

DEL 1 Övning 1.1 OBS! Alla laborationsfiler måste läggas upp på webbserven i din www/wa/lab1-mapp för att fungera. Öva med formulär I denna första övning ska du skapa två webbsidor, en html-sida som du döper till skicka.html, som innehåller ett vanligt HTML-formulär och en mottagarsida, taemot.php som "fångar" upp data från skicka-sidan och skriver ut det till webbläsaren. Sidan innehåller, förutom de obligatoriska html-taggar, html, head, body, etc, ett formulär som i sin tur innehåller två formulärsobjekt - en inmatingsruta (en input av typen text) och en submitknapp. Inmatningsrutan "lagrar" det som matas in i inmatningen och skickar till nästa webbsida när du klickar på submit-knappen. Form-taggen har två viktiga attribut, metod och action. Action anger till vilken url formuläret ska skickas och method anger vilken metod som ska användas när formuläret skickas (get eller post) I form-blocket, kallas även form-container, så finns attributet name till inmatningsfältet, det är namnet på html-variabeln som kommer att refereras till när värdet fångas upp på mottagsidan. skicka.html <html> <head> <title>övning 1.1 skicka.html</title> </head> <body> <form action="taemot.php" method="get"> <input type="text" name="mintext" /><br /> <input type="submit" /> </form> </body> </html>

Skapa mottagarsidan, taemot.php, som ska ta emot den inmatade strängen "mintext" och skriva ut den till webbläsaren. <html> <head> <title>övning 1.1 tameot.php</title> </head> <body> <?php // php-blocket startas // Hämta in värdet som skickas till sidan och tilldela variabeln // $mintext detta värde. $_GET['mintext'] är en funktion för att hämta variabeldata från sändarsidan $mintext = $_GET['mintext']; // Skriv ut variabeln med echo, avgränsa utskrift av text och php med punkt. echo "i rutan på förra sidan skrev du: ". $mintext; // php-blocket avslutas?> </body> </html> Svara på följande frågor: 1.1.1 Byt till method="post" i formuläret och hämta in data med $_POST[]. Vad är skillnaden? 1.1.2 Vad gör $mintext? Hur gör du för att skriva programkoden på en enda rad istället och inte använda

$mintext alls? 1.1.3 Var noga med namngivningen! Prova att byta namn på formulärsobjekten på html-sidan och beskriv vad som händer Övning 1.2 1.2.1 Skapa en html-sida, berakna.html, som ser ut ungefär som nedan, formulären ska innehålla ett inmatningsfält, en submitknapp och en återställningsknapp (återanvänd koden från förra övningen, utgå från den och gör ändringar så slipper du skriva allt igen. 1.2.2 Skapa en php-sida, brutto.php, som tar emot värdet som skickas från sidan du just gjort och beräknar lönen med procentsatsen 30% på detta samt skriver ut resultatet. Återanvänd också här koden från förra övningen, den enda egentliga skillnaden är att du här behöver göra en matematisk beräkning. Sekvensen i koden bör vara denna: 1. hämta in värde 2. gör procentpåslaget 3. skriv ut resultat När du fått det att fungera kan du komprimera genom att försöka göra ovanstående tre operationer i ett och samma svep. Skriv också ut datum och tid för beräkningen. Experimentera med olika tidsformat. (Exempel på datumformat finns nedan). Exempel, datumformat:

echo date("h:i:s"); Resultat: 10:43:47 echo date("y-m-d"); Resultat: 2003-09-26 echo date("l, j F - "). "Vecka ". date("w");resultat: Friday, 26 September - Vecka 39 Övning 1.3 Selektion, urval I den här övningen ska du skapa en enkel Omvandlare. Ett formulär låter användaren fylla i ett temperaturvärde och ange till vilken temperaturenhet som värdet skall omvandlas. En php-sida hämtar in det numreriska värdet och värdet som anger temperaturtyp. Beroende på vald temperaturomvandling körs olika delar av koden och resultat visas. Notera att fälten där användaren ska fylla i numeriska värden är input av typen "text", det finns inte någon numerisk input. 1.3.1 Skapa en html-sida med ett formulär. Formuläret ska innehålla en textrutor, två radioknappar samt en submitknapp. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/tr/xhtml11/dtd/xhtml-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>temperaturomvandlare</title> </head> <body>

<h1>temperaturomvandlare</h1> <form action="temp.php" method="get"> Temperatur <input type="text" name="varde" /><br /> <input type="radio" name="typ" value="celsius" /> celsius<br /> <input type="radio" name="typ" value="fahrenheit" /> fahrenheit<br /> <input type="submit" /> </form> </body> </html> 1.3.2 Skapa den php-sida som värdena ska skickas till (i ovanstående kodexempel har action värdet "temp.php", ändra detta till ditt eget filnamn). <html> <head> <title>temperaturomvandlare</title> </head> <body> <h1>svar:</h1> <?php // Hämta in de olika värdena $temp = $_GET['varde']; $temptyp = $_GET['typ']; // Om användaren angett celsius if($temptyp=="celsius"){ echo "Temperaturen:". $temp. " celsius ". "blir omvandlat till". ($temp*9/5+32). "Fahrenheit"; } // annars, om användaren angett fahrenheit elseif($temptyp=="fahrenheit"){

} echo "Temperaturen:". $temp. " fahrenheit ". " blir omvandlat till". (($temp-32)*5/9). "Celsius";?> </body> </html> Testkör sidorna, prova samtliga temperaturenheter. Svara på följande frågor 1.3.4 Vad i koden är kommentarer och varför finns dom där? Kan du se vikten av att kommentera koden? 1.3.5 Kan du komma på sätt att förenkla/rationalisera koden? Övning 1.4 Övning - iteration, upprepning I den här övningen ska du skapa två sidor. Den första ska låta användaren fylla i ett numerisk värde och ett textvärde. Värdena ska skickas till en sida som tar emot värdena, kontrollerar att det numeriska värdet faktiskt är numeriskt (använd funktionen is_numeric (http://se2.php.net/manual/en/function.is-numeric.php) ) och i så fall skriver ut textvärdet så många gånger som det numeriska värdet anger. Om det inte är ett numerisk värde ska ett meddelande om detta visas. 1.4.1 Skapa en html-sida med formulär. Du kan kopiera koden från någon tidigare övning och redigera.

Sidan ska innehålla två inmatningsfält, det ena för valfri text och det andra för ett valfritt numeriskt värde, samt en submitknapp. Var noga när du anger name för inmatningsrutorna. Formuläret ska använda metoden get (method="get"). 1.4.2 Skapa en php-sida som tar emot värdena. När värden hämtats in ska först en kontroll ske om det numeriska värdet faktiskt är numeriskt. Det finns en knepighet här eftersom allt som skickas från förra sidan betraktas som textvärden, det innebär att om t.ex. användaren angett siffran 3 kan detta värde både tolkas som det numeriska värdet 3 och som textrepresentationen "3". Däremot kan textvärden bara tolkas som just text. En lösning på detta är att först kontrollera om ett värde är numerisk - värdet 3 kan ju vara både ett numeriskt värde och ett textvärde - om denna kontroll utfaller som sant kan du vara säker på att värdet är numeriskt. Om du istället först hade kontrollerat att värdet 3 är ett textvärde skulle ju detta också vara sant...

Gör en for-loop som använder det numeriska värdet för att skriva ut textsträngent angivet antal gånger, skriv också ut en "räknare" (se bildexempel). 1.4.3 Skriv in text i namnfältet och en siffra i fältet för antal. Testkör sidan men tänk på att inte skriva in ett för stort värde. Då får du vänta onödigt länge...

1.4.4 När du fått det att fungera som du vill, lägg till en if-sats som kollar om det inmatade numret är för stort (t.ex. max 50). Om numret är för stort, ska ett meddelande om detta visas och iterationen ska inte köras. Fundera över... - Hur kan du uttyda det som står i webbläsarens adressfönster? Vad är frågesträng (querystring), vilka tecken används som avdelare och hur används dom? - Vad händer om du skriver en sträng i fältet för antal? Varför? - Vad händer om du skickar med en sträng som innehåller mellanslag? 1.4.5 Ett annat sätt att iterera är att använda WHILE istället för FOR. Byt ut FOR-loopen mot en WHILEloop (spara FOR-loopen genom att kommentera bort de raderna). Var noga så att du inte skapar en "evighetsloop", initiera och inkrementera ett räknevärde. Svara på följande frågor 1.4.6 Vilken av looparna - FOR eller WHILE - tycker du är mest användbar i det här sammanhanget? Varför? 1.4.7 Vilken är den grundläggande skillnaden mellan de olika looparna? 1.4.8 Vilka ändringar behöver du göra om du vill att formuläret ska använda metoden "post" istället för "get"? Redovisning del 1

Redovisa del 1 av laborationen genom att svara på samtliga frågor och sammanfatta detta i ett textdokument som du omvandlar till en pdf. Lämna in pdf-dokumentet i inlämningslådan, Inlämning Lab1, på StudentAdmin. DEL 2 Konstanter och vektorer Syftet med labben är att öva följande: * Förstå och definiera konstanter * Vektorhantering (arrays) * Manipulation och redigering av textsträngar Vi skall börja med att definiera konstanter. Konstanter kan jämföras med variabler. Det är namn som vi använder för att lagra något slags värde. Skillnaden mellan variabler och konstanter är dock att värdena som konstanterna håller är konstanta. Har vi väl definierat värdet för en konstant är det detta värdet som gäller för konstanten. Definiera en konstant Konstanter skrivs alltid med versaler. Det finns två typer av konstanter. Fördefinierade konstanter, sådana som är fördefinierade i phpoch sådana konstanter som programmeraren skapar själv. Detta gör vi genom att definiera dem med funktionen define. define( KONSTANTNAMN, Konstantens värde ); Fördefinierade konstanter I php finns det ett stort antal fördefinierade konstanter. Det är sådana som ofta går att använda för att få reda på användbar information om systemet eller om just den process, session eller funktion du kör för tillfället. Fördefinierade konstanter kan du läsa om i php-manualen phps-hemsida (http://www.php.net) där samtliga finns listade. Stränghantering Strängar är variabler som har lagrats med någon typ av text. Allt från ett eller några enkla ord till långa artiklar med flera kilobyte av text. Oavsett storleken är det inte ovanligt att du behöver manipulera värdet eller kontrollera det. I php finns det många funktioner som hanterar detta. Det kan handla om att kontrollera ifall en textsträng, som skall innehålla en e-postadress, innehåller ett @-tecken eller inte, till att konvertera gemener till versaler. I följande labb kommer en del av funktionerna att användas men det är viktigt att du själv fortsätter att läsa och experimentera kring de övriga strängfunktionerna för php. Returnera ett tecken Alla tecken har särskilda teckenkoder, php använder också dessa teckenkoder från ascii-tabellen. Exempelvis motsvarar ascii-koden 64 @-tecknet. Samtliga ascii-koder till den här funktionen kan du finna på Ascii-tabellen (http://www.asciitable.com).

$tecken = chr(64); </code> Dela upp en sträng i flera delar i form av en array Vissa strängar innehåller värden som egentligen borde betraktas som flera separata. Funktionen explode låter dig dela upp en sträng i flera delar. Det andra argumentet för funktionen avgör vilket tecken som skall användas som delningstecken. I exemplet kommer semikolon (;) att betraktas som delningstecken. Varje gång ett semikolon påträffas i strängen lägger funktionen värdet som ett eget värde på egen plats i en array. <code> $strang = "Värde1;Värde2;Värde3"; $delar = explode(";", $strang); print($delar[2]. "<p/>"); Omvänt: Slå ihop värdena i en array till en sträng På samma sätt som du kan dela upp en sträng kan du även, med hjälp av, implode. Lägga alla värden från en array i en och samma sträng. Det första argumentet i strängen bestämmer vad som skall separera värdena som läggs ihop. I det här fallet använder vi semikolon som separator. $a = array('värde1', 'Värde2', 'Värde3'); $alla = implode(";", $a); Ta bort blanksteg i början av en sträng Ibland vill man ta bort blanksteg som finns i början av strängar. Detta görs med funktionen trim(). Funktionen trim "trimmar" en textsträng, alltså klipper bort specifierade tecken antingen i början eller i slutet av en sträng. Notera att det alltså bara gäller i början och i slutet, inte inne i strängen. För att ta bort blanksteg i början av en sträng använder du funktionen ltrim(). $blanksteg = "\t\t\ttexten"; $blanksteg = ltrim($blanksteg); På samma sätt kan du använd rtrim för att ta bort blanksteg i slutet av en sträng. Funktionen trim fungerar också på samma sätt fast den tar bort blanksteg både i början och slutet av strängen samtidigt. Övning 2.1 Skriv följande: <? $namn= " Ryan Dias "; echo $namn;?> Ta nu bort mellanslagen i början och slutet av strängen med trim-funktionen. Skriv ut variabeln igen och undersök skillnaden skillnaden. För att bättre undersöka skillnaden så kan du skiva ut variabeln mellan pre-

taggar så syns det bättre. <? echo "<pre>"; $namn = " Ryan Dias "; echo "Innan trim: ". $namn. "<br />"; $namn = trim($namn, " "); echo "Efter trim: ". $namn. "<br />"; echo "<pre>";?> Övning 2.2 Omvandla strängar. Följande kod skapar ett formulär som omvandlar strängen till gemener eller versaler. <html> <head> <title>labb1: Övning 2.2</title> </head> <body> Ange din söksträng: <form action="ovn2.php" method="get"> <input type="text" name="mintext" /><br /> <input type="radio" name="typ" value="versaler" />Omvandla till versaler<br /> <input type="radio" name="typ" value="gemener" />Omvandla till gemener<br /> <input type="submit" /> </form> </body> </html> Mottagkoden i php. <?php $text=$_get['mintext']; $omv=$_get['typ']; if($omv=="versaler") { echo "Orginaltext:". $text. "<br />"; echo "Omvandlad text: ". $text=strtoupper($text). "<br />"; } elseif($omv=="gemener") { echo "Orginaltext:". $text. "<br />"; echo "Omvandlad text: ". ($text=strtolower($text)). "<br />"; }?> Övning 2.3 Längden på en sträng. Längden av en sträng räknas ut med hjälp av funktionen strlen(), och returnerar en siffra över antalet tecken i strängen. $text="medieteknik"; echo strlen($text); Fråga

2.3.1 Hur lång är strängen? Övning 2.4 Strängar kan "plockas isär" med hjälp av funktionen, substr(). Syntaxen för substr() är: substr(orginal-sträng, startposition, längd) Första positionen i en sträng är en nolla. Exempel. $personnr="710129-1111"; $fdag=substr($personnr,2,4); echo $fdag; Frågor 2.4.1 Vad visar koden för värde? 2.4.2 Skriv kod som skriver ut födelsedagsmånaden. Övning 2.5 I den här övningen ska du träna att ersätta specificerade tecken/strängar som finns i en längre sträng. Du använder följande funktioner, den ena gör skillnad på gemener och versaler (str_replace) och den andra inte (str_ireplace). str_replace(sökt sträng, ersättningssträng, sträng att söka i) -- case sensitive str_ireplace(sökt sträng, ersättningssträng, sträng att söka i) -- ej case sensitive Nu ska du skriva kod som omvandlar en text från svart till vit. Skapa en php-sida där du definierar en textvariabel som tilldelas strängen "Jag har endast svarta kläder på mig". Skriv ut variabeln. Använd str_replace() för att ersätta "svarta" med "vita". Var noga med att skriva argumenten i rätt ordning. $clothes = "Jag har endast svarta kläder på mig"; echo $clothes. "<br />"; $clothes = str_replace("svarta", "vita", $clothes); echo $clothes; Fler strängfunktioner strpos(sträng, sökt sträng) (Returnerar värde för hittad sträng, eller 0) stristr(sträng, sökt sträng) (Returnerar sträng fr.o.m. sökt sträng till slut av sträng) Du kan också använda vektorer (arrayer) som argument till str_replace(). Skriv nedstående kod med variabeln $studera_bra och tilldela den strängen "Det är bra att notera, repetera, och öva.". Skapa en array som tilldelas värdena "notera", "repetera" och "öva". Skapa ytterligare en array som tilldelas värdena "äta", "sova" och "festa". Använd arrayerna och textvariabeln i en str_replace() för att ersätta orden i textvariabeln. $studera_bra = "Det är bra notera, repetera och öva";

$studera_bra = "Det är bra notera, repetera och öva"; $studera_bra_1 = array("notera", "repetera", "öva"); $studera_bra_2 = array("äta", "sova", "festa"); $studera_bra = str_replace($studera_bra_1, $studera_bra_2, $studera_bra); Svara på följande frågor: 2.5.1 Vad händer om du byter inbördes plats på vektorerna? 2.5.2 Vad händer om du har flera vektorer i den ena arrayen? Övning 2.6 Övning - spaltbredd, radbrytningar och specialtecken för html I den här övningen ska du exerimentera med olika sätt att visa text som html och några sätt att göra din genererade kod mer läsbar. Du kommer att använda följande funktioner: nl2br(sträng) (kan utläsas "new line to br") Lägger till <br /> vid alla radbrytningar. wordwrap(sträng [, bredd (int)] [, radbrytartecken (sträng)] [, tvingande (bool)]) Gör radbrytning vid angiven bredd med angivna tecken (valfri parameter, default är \n). Om valfri parameter "tvingande" sätts till 1 sker radbrytning vid angivet antal tecken om ett ord överstiger breddens längd, annars vid närmaste mellanslag. htmlentities(sträng [, citatstil (int) [, charset (sträng)]]) Omvandlar alla nödvändiga tecken till html-specialtecken. Valfri pararmeter citatstil kan användas för att konvertera citattecken. Valfri pararmeter charset för att välja teckenuppsättning (default är ISO-8859-1, Western European, Latin-1). För att göra övningen behöver du en del text utan radbrytningar som råmaterial. Kopiera t.ex. från någon lite längre tidningsartikel (använd helst en svensk artikel eftersom du senare ska öva att göra om bl.a. å, ä och ö). Du kan också generera "lorum ipsum"-text på nedanstående url men den texten innehåller inte å, ä och ö. Var noga med att kontrollera att din text inte innehåller några radbrytningar. Generera "lorum ipsum"-text (http://www.lipsum.com) Spalt 1. Skapa en php-sida. Skapa en variabel som tilldelas hela din text och skriv ut den med echo (eller print). Du kommer att se att textens spaltbredd är lika bred som webbläsarens fönsterbredd. Förstora och förminska fönstret för att kontrollera detta. 2. Lägg nu till funktionen wordwrap, sätt spaltbredden till 50 tecken. Det bör se ut ungefär såhär: echo wordwrap($text, 50, "<br />");

När du tittar på sidan i din webbläsare ser du att du har skapat en spalt som är ca 50 tecken bred. Välj "visa källa"/"view source" i din webbläsare och notera att <br /> -taggarna har infogats. För att göra även källan mer läsbar, lägg till \n intill parametern för radbrytningstecken, såhär: wordwrap($text, 50, "<br />\n");. När du nu tittar på sidans källa kommer du att se att efter varje <br /> -tag finns nu en radmatning. Denna radmatning har ju ingen synlig effekt i html men gör källan betydligt mer lättläst. \n står för radmatning och \r egentligen för "carriage return", alltså "tillbaka till radens början". Beroende på vilket operativsystem du använder kan du få lite olika effekter när du använder \n och \r. Radbryningar I ovanstående exempel skapade du radbrytningar i en text som saknade det. Nu ska du använda en text som redan har radbrytningar, använd samma text men gör egna radbrytningar i texten - åtminstone så många så att du tydligt kan se effekterna av dina ändringar. 1. Gör radbrytningar i din exempeltext, tilldela variabel texten och skriv ut med echo. När du tittar på resultatet i webbläsare ser du att dina radbrytningar ignoreras i html men syns bra i sidans källa. 2. Lägg till funktionen som skapar <br /> -taggar för radbrytningar när variabeln skrivs ut. T.ex. echo nl2br($text). Titta på resultat och källa i webbläsare. Den här metoden är speciellt användbar när du har längre texter som är formaterade med radbrytningar i en databas. Dels behöver inte den som lägger in texten bekymra sig med att lägga in html-taggar för detta, dels finns det ofta anledning att lagra texten i databasen utan dessa taggar eftersom den sannolikt ska användas i något annat sammanhang och då vill man inte behöva rensa texten från html-formatering. Specialtecken I html finns specialtecken för de tecken inom ISO 8859-1 (Latin-1)-teckenuppsättningen som har koder från 160 till 255. Våra svenska gemena och versala å, ä och ö finns t.ex. bland dessa. Andra vanliga tecken är större- och mindre än (> <), och(et)-tecken (&), accent-tecken osv här finns fullständig referens (http://www.webmonkey.com/2010/02/special_characters/) 1. Se först till att din text innehåller tecken som behöver konverteras och tilldela en variabel texten. Skriv ut med echo och titta på resultatet med webbläsare. Beroende på dina inställningar och vilken webbläsare du använder kan resultatet se olika ut, sannolikt är att de flesta tecken ser bra ut trots att de inte är konverterade till specialtecken. Titta också på resultatets källa.

2. Om din text är i utf-8 format (vilket den förmodligen är) behöver du först konvertera texten till ISO- 8859-1 format. Detta gör du med funktionen utf8_decode(). 3. Lägg nu till funktionen htmlentities vid utskriften av variabeln. Om du inte ser någon skillnad i resultatet kommer du att göra det när du tittar på resultatets källa. 4. Prova nu att använda htmlentities() tillsammans med nl2br(), du kan göra det i ett svep men var noga med prioriteringsordningen för funktionerna, vad händer om funktionen nl2br() körs innan htmlentities()? Såhär: echo htmlentities(nl2br($text)); Vänd på ordningen för funktionerna och titta på resultatet. Övning 2.7 Du bör ha läst igenom kap 5 eller använda kapitel 5 som referens för följande uppgift. Du ska nu skapa en enkel sökfunktion, alltså matcha ett okänt strängvärde mot en befintlig text för att finna förekomster av det okända strängvärdet. Själva söksträngen ska vara minst två tecken. Du ska även göra några anpassningar av visningen av resultatet. Skapa en sida med ett formulär där användare kan fylla i ett ord och klicka på en "sök"-knapp. En annan (eller samma) sida ska ta emot värdet och först kontrollera att det är en textsträng med minst två tecken, sedan kontrollera om det inskickade ordet/strängen förekommer i följande text: OBS! Följande text har en radbrytning för att få plats på wiki-sidan. Ta bort radbrytningen när du kopierar in den till din kod. Det ska alltså rymmas på en enda rad i php-koden! Datamodellering är en etablerad metod inom systemutveckling. Men den kan användas också inom andra områden regelverk, standardisera nomenklatur och för att värdera befintliga system och programpaket på marknaden. Din sida ska; 1. kontrollera att söksträngen innehåller minst två tecken 2. visa information om söksträng; längd och position för första förekomst i texten 3. visa hela texten med matchande söksträng markerad på något vis (fetstil eller avvikande färg) Redovisning del 2 Redovisa del 2 av laborationen genom att svara på samtliga frågor samt bifoga källkoden från övning 2.7, sparad i.phps-format, i inlämningslåda, Lab1, på StudentAdmin. Retrieved from "http://mt.sh.se/dias/wa/index.php/laboration_1:_arbeta_med_formul%c3%a4r_och_str%c3%a4ngarhantering" This page was last modified on 3 November 2010, at 08:47. Content is available under Attribution-NonCommercial-ShareAlike 3.0 Unported.