Koppelteken binne stelle in regulêre uitdrukkings van PHP
Die koppelteken is ook 'n spesiale karakter binne []
(maar buite - nie). As jy die koppelteken self as karakter nodig het,
plaas dit dan waar dit nie as 'n groepskemmeraar begryp sal word nie.
Hoekom dit belangrik is: jy kan per ongeluk 'n groep
karakters skep. Byvoorbeeld,
so - [:-@] - dink jy dat jy
dubbelpunt, koppelteken en 'at'-teken kies, maar
in werklikheid kry jy 'n groep karakters tussen
: en @. Hierdie groep sluit die
volgende karakters in: :, ;, ?,
<, =, >.
Waar kom hulle vandaan? Uit die ASCII-tabel - dubbelpunt het 'n laer nommer as die 'at'-teken - en daarom ontstaan die groep. Dit beteken alle groepe word volgens die ASCII-tabel gevorm (as jy wil, kan jy dit gebruik).
Hoe om dit te hanteer: plaas die koppelteken
waar dit sekerlik nie as 'n groepskemmeraar gesien sal word nie,
bvoorbeeld, aan die begin of aan die einde
(dit is na [ of voor ]).
Jy kan ook die koppelteken ontsnap - dan
sal dit homself voorstel, ongeag die
posisie. Byvoorbeeld, in plaas van [:-@], skryf
[:\-@] - en daar sal nie 'n groep wees nie, maar
drie karakters - dubbelpunt, koppelteken en 'at'-teken @.
Voorbeeld
In die volgende voorbeeld is die soekpatroon so:
syfer 1, dan letter van 'a'
tot 'z', dan syfer 2:
<?php
$str = '1a2 1-2 1c2 1z2';
$res = preg_replace('#1[a-z]2#', '!', $str);
?>
As gevolg hiervan sal die volgende in die veranderlike weggeskryf word:
'! 1-2 ! !'
Voorbeeld
Laat ons nou die koppelteken ontsnap. As gevolg
hiervan is die soekpatroon so: syfer 1, dan
letter 'a', of koppelteken, of letter 'z',
dan syfer 2:
<?php
$str = '1a2 1-2 1c2 1z2';
$res = preg_replace('#1[a\-z]2#', '!', $str);
?>
As gevolg hiervan sal die volgende in die veranderlike weggeskryf word:
'! ! 1c2 !'
Voorbeeld
Jy kan eenvoudig die koppelteken skuif sonder om dit te ontsnap:
<?php
$str = '1a2 1-2 1c2 1z2';
$res = preg_replace('#1[az-]2#', '!', $str);
?>
As gevolg hiervan sal die volgende in die veranderlike weggeskryf word:
'! ! 1c2 !'
Voorbeeld
In die volgende voorbeeld is die soekpatroon so:
eerste karakter - dit is klein letters of
koppelteken '-', dan twee letters 'x':
<?php
$str = 'axx Axx -xx @xx';
$res = preg_replace('#[a-z-]xx#', '!', $str);
?>
As gevolg hiervan sal die volgende in die veranderlike weggeskryf word:
'! Axx ! @xx'
Voorbeeld
In die volgende voorbeeld is die soekpatroon so:
eerste karakter - dit is klein, hoof
letters of koppelteken '-', dan twee letters
'x':
<?php
$str = 'axx Axx -xx @xx';
$res = preg_replace('#[a-zA-Z-]xx#', '!', $str);
?>
As gevolg hiervan sal die volgende in die veranderlike weggeskryf word:
'! ! ! @xx'
Voorbeeld
Jy kan die koppelteken tussen twee groepe plaas - daar sal dit sekerlik nie nog 'n groep skep nie:
<?php
$str = 'axx 9xx -xx @xx';
$res = preg_replace('#[a-z-0-9]xx#', '!', $str);
?>
As gevolg hiervan sal die volgende in die veranderlike weggeskryf word:
'! ! ! @xx'
Praktiese take
Gegee 'n string:
<?php
$str = 'xaz xBz xcz x-z x@z';
?>
Vind alle stringe volgens die volgende patroon:
letter 'x', hoof- of klein
letter of koppelteken, letter 'z'.
Gegee 'n string:
<?php
$str = 'xaz x$z x-z xcz x+z x%z x*z';
?>
Vind alle stringe volgens die volgende patroon:
letter 'x', dan of dollarteken, of
koppelteken of plusteken, dan letter 'z'.