Strings in PHP

Introductie

In PHP kan je stukken tekst gebruiken als parameter of waarde voor een variabele. Omdat een tekst bestaat uit een boel letters achter elkaar, heet dit een tekenreeks of een string.

$a = 'hello world';
echo $a;

Strings maken

Een string kan op drie manieren worden opgegeven:

  • Dubbele quotes ("aanhalingstekens")
  • Enkele quotes ('apostrof')
  • Heredoc

Dubbele quotes

$b = "world";
$a = "hello $b";

Een string kan tussen dubbele quotes worden gezet. Alle tekst tussen de quotes komt in de string, maar sommige speciale woorden worden veranderd:

  • Variabelen worden vervangen door hun waarde
  • Met een backslash (\) kan er een speciaal teken worden ingevoegd

Variabelen

Binnen dubbele quotes worden variabelenamen vervangen door hun waarde:

$b = "world";
echo "hello $b";
De output hiervan is "hello world", omdat de tekst $b is vervangen door de waarde van variabele $b.

Dit vervangen van variabelen werkt ook met arrays en objecten:

$b = array("world");
echo "hello $b[0]";
De tekst $b[0] wordt nu vervangen door het eerste element uit de array $b.

Soms als je tekst en variabelenamen mengt is het niet duidelijk waar de naam van de variabele op houdt. Dit kan je aangeven met accolades:

$place = "world";
echo "I have been to many $places."; // Werkt niet, want $places bestaat niet
echo "I have been to many {$place}s."; // Werkt wel

Backslash

Een backslash kan gebruikt worden om speciale tekens in de string te stoppen:

echo "
hello\nworld
";
De \n in dit voorbeeld wordt vervangen door een newline, waardoor "world" op de volgende regel komt. Er zijn nog meer backslash combinaties die een speciaal teken opleveren. De belangrijkste daarvan is de backslash zelf. Omdat de backslash een speciale uitwerking heeft op het teken dat er achter komt, moet je iets speciaals doen als je een letterlijke backslash in je string wilt hebben: je moet dan twee backslashes gebruiken:
echo "Hello \\ world"; // print Hello \ world

Enkele quotes

Binnen enkele quotes worden variabele namen en backslashes niet als iets bijzonders gezien, behalve dan dat een backslash gebruikt kan worden om een enkele quote te gebruiken:

$place = 'world';
echo 'Hello $place.'; // Output: Hello $place. 
Omdat we hier enkele quotes gebruiken, wordt $place niet vervangen door "world".

Heredoc

Een zeldzaam gebruikte manier om grotere stukken tekst in een string te stoppen is de heredoc. Deze bestaat uit drie haakjes, gevolgd door een woord. Hierna komt de tekst voor in de string, beeindigd door het woord.

echo <<< EINDE
Hello world.
Hallo allemaal.
EINDE;
Let wel op,
  • het afsluitende woord (EINDE) moet aan het begin van de regel staan, dus geen spaties of tabs er voor;
  • na het afsluitende woord (EINDE) moet een puntkomma, net als na elke andere PHP regel.

Strings samenstellen

Als je meerdere strings hebt kun je die aan elkaar plakken met de concatenatie operator. Concatenatie is een moeilijk woord voor "aan elkaar plakken". Een operator ken je uit de wiskunde, zoals +, −, ×. Die operatoren werken echter op cijfers, terwijl de . operator op strings werkt.

$a = 3 + 6;
$b = 'aard' . 'bei';

Met de . operator kunnen twee of meer strings aan elkaar geplakt worden om een nieuwe string op te leveren.

$a = 'Lekker';
$b = 'weer';
echo $a.$b.'hier'; // Output: Lekkerweerhier
Je kan in PHP ook cijfers aan strings plakken. Het cijfer wordt dan omgezet in een string voor het plakken. Echter, als je het resultaat van een rekensom wil plakken moet je ronde haakjes gebruiken:
$a = 3;
echo 'waarde van $a: '.$a;
echo '$a min 1 fout: '.$a - 1; // Output: -1
echo '$a min 1 goed: '.($a - 1); // Output: $a min 1 goed: 2

Samenvatting

Enkele quotes
Geen variabelen, backslash werkt alleen voor enkele quote
Dubbele quotes
Variabelen worden vervangen, backslash heeft speciale uitwerking op volgende teken
Heredoc
Zelfde als dubbele quotes. Begin met <<< WOORD, einde met WOORD; aan begin van nieuwe regel
Strings aan elkaar plakken
De concatenatie operator bestaande uit een punt.
$a = 'Hello';
$a = "Hello";
$a = <<< END
Hello
END;
$a = 'Hello' . 'world';

Lees verder