STRÄNGAR En av de mest avancerade av de normala datatyperna är. Här skall vi grundläggande gå igenom hur den datatypen fungerar och vidare flertalet funktioner som hör till datatypen. Låt oss kasta oss in i dataflödet. Mycket viktigt att notera är att det finns flera typer av apostrofer speciellt om man kopierar information från Word eller annat ordbehandlingsprogram. Därför är det inte att rekommendera att använda Word som redigeringsprogram till PHP-kod. Inte heller att man kopierar kod som är skriven i ett Worddokument. De tecken som man skall använda är SHIFT->2 för dubbla citattecken och den apostrof som är till höger om Ä på tangentbordet för enkla citattecken. DATATYPEN PHP är ett otypat språk, som sades tidigare. Så om du skall skapa en variabel med en sträng i så räcker det med att tilldela en variabel strängvärdet. Strängen omsluts av citattecken, antingen enkla eller dubbla. Behöver man ha ett citattecken i strängen får man använda backslash \ för att lägga in det. Samma sak för backslash själv. Om du vill baka in variabler eller escape-tecken måste du använda dubbla citattecken. 39
Faktaruta: Escapetecken Ett tredje sätt att hantera är att använda heredoc syntax. Den ser ut så här. Denna syntax kan vara mycket brukbar, men den är väldigt kinkig på vissa detaljer. Det som står efter får enbart vara identifieraren (i detta fall ) och när man avslutar strängen får det enbart stå identifieraren och ett semikolon på den raden. I denna syntax kan man precis som med dubbla citattecknen använda escape-tecken och baka in variabler. WHITESPACE Låt oss gå vidare i vår stränghantering. Vissa saker tar vi för givna, däribland att när man trycker på ENTER-tangenten skall det bli en radbrytning. Men i HTML räknas ENTER som ett så kallat whitespace. Andra tecken som inkluderas i det är TAB. Whitespace (WS) innebär att när vi skriver det på skärmen blir det ett mellanrum mellan det som finns framför och det som finns bakom WS. Men det blir bara ett. Så om vi skriver: så blir utskriften på skärmen: 40
Hej världen och skriver vidare här. (SPACE flera gånger) Och avslutar här. För att få radbrytningar kan vi t.ex. använda HTML-taggen. För att få flera mellanslag efter varandra kan man använda. så blir utskriften på skärmen: Hej världen och skriver vidare här. (SPACE flera gånger) Och avslutar här KONKATENERING Om man vill lägga ihop två eller flera med varandra måste man använda konkateneringstecknet punkt. Utskriften blir: StefanFolkesson Kanske inte vad vi hoppades på. Om vi lägger till ett mellanslag i konkateneringen får vi ett fint mellanslag mellan förnamnet och efternamnet. Stefan Folkesson FUNKTIONER För att förvirra er lite grann tänkte vi börja avsnittet Funktioner med en funktion som faktiskt inte är en funktion utan en programstruktur, vilket betyder att du inte behöver ha en parentes runt om indata. 41
använder man för att få en utdataström. Skriver ut Hej Världen! på det som är definierat som utdatahanterare, oftast skärmen. kan även förkortas till ett lika med-tecken ( ) om du skriver det direkt efter öppningstaggen för php. Men då måste du använda en kort öppningstagg ( ) för att det skall fungera. Med kan man även skriva ut innehållet i variabler. Antingen genom att konkatenera na med variablerna. Skriver ut: Vi har 4 kronor i fickan. Eller genom att skriva in variabeln i strängen. Skriver ut: Vi har 4 kronor i fickan. Dock skall det påpekas att om man använder enkla citattecken så kommer variabelns namn att skrivas ut. Skriver ut: Vi har $pengar kronor i fickan. Vidare kan man skicka in flera parametrar till och låta själv lägga ihop strängen. Skriver ut: Vi har 4 kronor i fickan. 42
En liknande funktion är : Första parametern är strängen som skall skrivas ut och efterföljande parameter innehåller variabler som skall fogas in i strängen. Skriver ut: Vi har 4 kronor i fickan. I strängen har man platshållare för varje variabel. Och de matas in i den ordning de kommer som parameter. Skriver ut: Två olika tal är 34 och 100. Skriver ut: Två olika tal är 100 och 34. Platshållarna talar om hur man skall hantera parametrarna där står för ett heltal. En kort lista på olika platshållare: heltal decimaltal tal i grundpotensform tal i binärform tal i oktalform tal i hexadecimalform sträng Man kan även ändra om ordningen på hur parametrarna hanteras. Skriver ut: Två olika tal är 100 och 34. 43
Kan vara bra att hålla reda på längden på en sträng. Skriver ut: Strängen Hej världen! har 12 tecken. Om man hanterar kan det vara bra att kunna skriva ut den baklänges. Skriver ut: Strängen Hej världen! baklänges blir:!nedlräv jeh FORMATERA STRÄNGAR När man hanterar är det skillnad på stor och liten bokstav. För att undvika detta kan det vara bra att använda följande funktioner. Gör om hela strängen till gemener. Gör om hela strängen till VERSALER. Sätter första bokstaven i varje ord till versal. Sätter första bokstaven i strängen till versal. 44
Skriver ut: detta är en mening! DETTA ÄR EN MENING! Detta ÄR En MeninG! Detta ÄR en MeninG! Detta Är En Mening! Detta är en mening! Man måste även kunna dela upp en sträng i en eller flera delar. Med hjälp av får vi varje ord i en array om man använder mellanslag som avgränsare. Skriver ut: Detta ÄR en MeninG! Om man har en array och vill slå ihop den till en sträng använder man istället. Skriver ut: En God Jul Önskar Kalle 45
Om man vill dela upp strängen i lika stora delar kan man använda. Om man inte ger en längd parameter så delar den automatiskt upp strängen i en-tecken-delar. Skriver ut: He j Vä rl de n! REGULAR EXPRESSIONS Ibland vill man dela upp strängen i väldigt specifika delar och då måste man oftast använda regular expressions för att träffa rätt i strängen. Regular expressions (regex) är en hel vetenskap i sig som vi inte går närmare in på i den här boken. Men vi tänkte beskriva en enkel hantering av regex här och nu. Med delar du upp en sträng till en array baserat på ett mönster. Om vi nu vill dela upp en sträng i dess ord kan man göra så här: Detta mönster delar upp strängen i delar på mellanslag vilket gör att man, om tolkas som ett ord. Detta är kanske inte optimalt. Om vi vill lägga in flera alternativ till uppdelningen kan vi använda hakparentes. 46
Detta löser det problemet. Nu delar vi upp strängen baserat på mellanslag eller komma. Om man vill vara riktigt ordentlig skall man skriva: betyder white space så nu kommer enter, tabb och mellanslag förutom komma att träffas. betyder att vi kan matcha ett eller flera avdelningstecken. Så om vi har dubbla mellanslag eller komma mellanslag så blir det ändå bara en uppdelning. Ibland vill man hitta saker i en sträng och då kan regex vara smidigt att använda. Om vi nu skulle vilja hitta alla om i föregående exempels mening kan man skriva så här: Detta ger oss svaret att det är ett om i meningen, men det är förmodligen inte det vi ville veta som vi får reda på. I denna sökning matchar vi nämligen om i som. För att söka enbart på ordet om måste vi lägga till runt om ordet. Så här: Styrkan i att göra en matchning med regex är att man kan lägga till wildcards och upprepningar. Om vi vill se om vi har någon siffra i strängen kan man skriva: Oj, vi effektiviserade visst koden lite. Det blir gärna så när man arbetar med regexexempel. Det skulle kanske vara intressant att veta vilken siffra vi har i strängen med och det finns inbyggt i att spara vad vi träffade. 47
Vi lade till variabeln och kompletterade mönstret med ett för att träffa siffror som har fler än ett tecken. Man kan även göra mycket mer avancerade matchningar. Vi använder som avgränsare här för att används i matchningen, då blir det oftast problem om man använder den som avgränsare. Här matchar vi en specifik tagg i detta fallet. Matchar en e-postadress i en sträng. När vi nu lärt oss att leta reda på saker i en sträng kan vi givet också ersätta dem. Om vi skall byta ut alla Kalle till kalle i en sträng så rekommenderar vi att man använder och inte en då den är mycket snabbare och smidigare att arbeta med. Vi kan även byta ut flera saker samtidigt med hjälp av arrayer. 48
Om vi dock skall göra lite mer avancerade matchningar så måste vi använda. 49