Brūkšnelis reguliariųjų išraiškų PHP aibų viduje
Brūkšnelis - taip pat specialus simbolis [] viduje
(tačiau išorėje - ne). Jei jums reikia paties
brūkšnelio kaip simbolio - padėkite jį ten,
kur jis nebus suprastas kaip grupės
skirtukas.
Kodėl tai svarbu: jūs galite nesuplanuotai sukurti simbolių
grupę. Pavyzdžiui, štai taip - [:-@] - jūs galvojate, kad
pasirenkate dvitaškį, brūkšnelį ir etaženklą, o
iš tikrųjų pasirodo simbolių grupė tarp
: ir @. Į šią grupę įeina
šie simboliai: :, ;, ?,
<, =, >.
Iš kur jie atsirado? Iš ASCII lentelės - dvitaškis turi mažesnį numerį nei etaženklas - ir susidaro grupė. Tai yra, visos grupės susidaro pagal ASCII lentelę (jei norima, tuo galima naudotis).
Kaip su tuo kovoti: padėkite brūkšnelio simbolį
ten, kur jis tikrai nebus suprastas kaip
grupės simbolis, pavyzdžiui, pradžioje arba pabaigoje
(tai yra po [ arba prieš ]).
Taip pat galima ekranuoti brūkšnelį - tada
jis reikš save patį nepriklausomai nuo
padėties. Pavyzdžiui, vietoj [:-@] parašyti
[:\-@] - ir grupės jau nebus, o
bus trys simboliai - dvitaškis, brūkšnelis ir etaženklas @.
Pavyzdys
Šiame pavyzdyje paieškos šablonas toks:
skaitmuo 1, tada raidė nuo 'a'
iki 'z', tada skaitmuo 2:
<?php
$str = '1a2 1-2 1c2 1z2';
$res = preg_replace('#1[a-z]2#', '!', $str);
?>
Rezultate į kintamąjį bus įrašyta tai:
'! 1-2 ! !'
Pavyzdys
Dabar ekranuokime brūkšnelį. Rezultate
paieškos šablonas toks: skaitmuo 1, tada
raidė 'a', arba brūkšnelis, arba raidė 'z',
tada skaitmuo 2:
<?php
$str = '1a2 1-2 1c2 1z2';
$res = preg_replace('#1[a\-z]2#', '!', $str);
?>
Rezultate į kintamąjį bus įrašyta tai:
'! ! 1c2 !'
Pavyzdys
Galima tiesiog perstatyti brūkšnelį, jo neekranuojant:
<?php
$str = '1a2 1-2 1c2 1z2';
$res = preg_replace('#1[az-]2#', '!', $str);
?>
Rezultate į kintamąjį bus įrašyta tai:
'! ! 1c2 !'
Pavyzdys
Šiame pavyzdyje paieškos šablonas toks:
pirmasis simbolis - tai mažosios raidės arba
brūkšnelis '-', po to dvi raidės 'x':
<?php
$str = 'axx Axx -xx @xx';
$res = preg_replace('#[a-z-]xx#', '!', $str);
?>
Rezultate į kintamąjį bus įrašyta tai:
'! Axx ! @xx'
Pavyzdys
Šiame pavyzdyje paieškos šablonas toks:
pirmasis simbolis - tai mažosios, didžiosios
raidės arba brūkšnelis '-', po to dvi raidės
'x':
<?php
$str = 'axx Axx -xx @xx';
$res = preg_replace('#[a-zA-Z-]xx#', '!', $str);
?>
Rezultate į kintamąjį bus įrašyta tai:
'! ! ! @xx'
Pavyzdys
Galima brūkšnelį patalpinti tarp dviejų grupių - ten jis tikrai dar nesukurs dar vienos grupės:
<?php
$str = 'axx 9xx -xx @xx';
$res = preg_replace('#[a-z-0-9]xx#', '!', $str);
?>
Rezultate į kintamąjį bus įrašyta tai:
'! ! ! @xx'
Praktinės užduotys
Duota eilutė:
<?php
$str = 'xaz xBz xcz x-z x@z';
?>
Raskite visas eilutes pagal šį šabloną:
raidė 'x', didžioji arba mažoji
raidė arba brūkšnelis, raidė 'z'.
Duota eilutė:
<?php
$str = 'xaz x$z x-z xcz x+z x%z x*z';
?>
Raskite visas eilutes pagal šį šabloną:
raidė 'x', tada arba dolerio ženklas, arba
brūkšnelis arba pliusas, po to raidė 'z'.