CMS-kursen

Stränghantering

Mät, klipp, slå ihop och tvätta text med PHP:s inbyggda strängfunktioner.

De vanligaste funktionerna

Funktion Gör Exempel Resultat
strlen() Räknar längden strlen("hej") 3
trim() Tar bort mellanslag före och efter trim(" hej ") "hej"
substr() Plockar ut en delsträng substr("Programmering", 0, 7) "Program"
strtoupper() Gör om till versaler strtoupper("hej") "HEJ"
strtolower() Gör om till gemener strtolower("HEJ") "hej"
str_replace() Byter ut text str_replace("a", "o", "banan") "bonon"
htmlspecialchars() Gör HTML-tecken ofarliga htmlspecialchars("<b>") "&lt;b&gt;"

Två strängar slås ihop (konkateneras) med punkt: "text 1" . "text 2".

substr("Programmering", 0, 7) börjar på position 0 (första tecknet) och tar 7 tecken.

Skydda mot XSS

Som du såg i modulen om PHP på webben måste text som kommer utifrån tvättas innan den skrivs ut på en sida:

Svenska tecken

strlen() räknar byte, inte tecken. Å, ä och ö tar två byte var i UTF-8, så strlen("åäö") ger 6. Funktionerna som börjar med mb_ räknar tecken:

echo strlen("åäö");     // 6
echo mb_strlen("åäö");  // 3

Det finns motsvarande mb_substr(), mb_strtoupper() och mb_strtolower().

I din egen installation på Windows måste tillägget först slås på. Öppna php.ini och ta bort semikolonet framför de två raderna ;extension_dir = "ext" och ;extension=mbstring. Annars får du felet Call to undefined function mb_strlen(). I portalen fungerar funktionerna direkt.

Enkla och dubbla citattecken

Inom dubbla citattecken byts variabler ut mot sina värden. Inom enkla citattecken skrivs texten ut precis som den står:

$namn = "Anna";
echo "Hej $namn"; // Hej Anna
echo 'Hej $namn'; // Hej $namn

Prova själv

  1. Skriv ut de tre första tecknen i ditt namn.
  2. Skriv ut ditt namn med versaler.
  3. Prova strlen() och mb_strlen() på ett ord med å, ä eller ö.
  4. Byt ut alla mellanslag i en mening mot bindestreck med str_replace().