Inleiding tot reguliere expressies in PHP
Reguliere expressies zijn commando's voor complex zoeken en vervangen. Ze maken zeer interessante dingen mogelijk, maar zijn helaas behoorlijk moeilijk onder de knie te krijgen.
Er zijn verschillende PHP-functies voor het werken
met reguliere expressies. We beginnen met kennismaken
met hen aan de hand van het voorbeeld preg_replace. Deze
functie accepteert als eerste parameter wat vervangen moet worden,
als tweede - door wat, en als derde parameter
- de string waarin vervangen moet worden:
<?php
preg_replace(wat te vervangen, door wat, string);
?>
Hierbij accepteert onze functie als eerste parameter
niet zomaar een string, maar een reguliere expressie,
die een string vertegenwoordigt met een set commando's,
geplaatst binnen het hekjes-symbool #.
Deze hekjes worden scheidingstekens (delimiters)
van reguliere expressies genoemd.
Na de scheidingstekens kunnen modifiers worden geschreven - commando's die de algemene eigenschappen van de reguliere expressie wijzigen.
Reguliere expressies zelf bestaan uit twee soorten symbolen: uit die welke zichzelf vertegenwoordigen en uit symbool-commando's, die speciale tekens worden genoemd.
Letters en cijfers vertegenwoordigen zichzelf. In het volgende
voorbeeld vervangen we met behulp van een reguliere expressie
de letter 'a' door '!':
<?php
preg_replace('#a#', '!', 'bab'); // retourneert 'b!b'
?>
Maar een punt is een speciaal teken
en vertegenwoordigt elk willekeurig teken. In het volgende
voorbeeld vinden we een string volgens dit patroon:
letter 'x', dan elk willekeurig teken, dan
weer letter 'x':
<?php
preg_replace('#x.x#', '!', 'xax eee'); // retourneert '! eee'
?>
Gegeven een string:
<?php
$str = 'ahb acb aeb aeeb adcb axeb';
?>
Schrijf een reguliere expressie die de strings
'ahb', 'acb', 'aeb'
vindt volgens het patroon: letter 'a', elk willekeurig teken,
letter 'b'.
Gegeven een string:
<?php
$str = 'ahb acb aeb aeeb adcb axeb';
?>
Schrijf een reguliere expressie die de strings
'aeeb', 'adcb', 'axeb'
vindt volgens het patroon: letter 'a', twee willekeurige
tekens, letter 'b'.