Vooruitskou in PHP reguliere uitdrukkings
Soms moet jy 'n probleem van hierdie tipe oplos: vind
die string 'aaa' en vervang dit met '!',
maar slegs as 'x' na 'aaa' volg,
en vervang nie self 'x' nie. As ons die probleem
probeer oplos op die 'voor die hand liggende' manier,
sal ons nie slaag nie:
<?php
preg_replace('#aaax#', '!', 'aaax'); // sal '!' wees, maar moet '!x' wees
?>
Om die probleem op te los, is 'n manier nodig om te sê
dat 'x' nie vervang moet word nie. Dit word
gedoen met behulp van spesiale hakies (?= ),
wat net kyk, maar nie saamneem nie.
Hierdie hakies word positiewe vooruitskou
vooruit genoem. Positief - omdat 'x'
(in ons geval) moet wees - eers dan sal die
vervanging plaasvind.
Kom ons pas hierdie hakies toe om ons probleem op te los:
<?php
preg_replace('#aaa(?=x)#', '!', 'aaax'); // gee '!x' terug
?>
Daar is ook negatiewe vooruitskou vooruit
- (?! ) - dit sê, integendeel, dat
daar iets nie moet wees nie. In die volgende voorbeeld
sal vervanging slegs plaasvind as 'x' nie
na 'aaa' volg nie:
<?php
preg_replace('#aaa(?!x)#', '!', 'aaab'); // gee '!b' terug
?>
Gegewe 'n string wat funksiename bevat:
<?php
$str = 'func1() func2() func3()';
?>
Kry 'n array van funksiename uit die string.
Gegewe 'n string met 'n etiket:
<?php
$str = '<a href="" class="eee" id="zzz">';
?>
Kry 'n array van attribuutname van hierdie etiket.