Crtica unutar skupova u regex izrazima PHP
Crtica - takođe specijalni karakter unutar []
(a izvana - nije). Ako vam treba sama
crtica kao simbol - onda je stavite tamo,
gde neće biti shvaćena kao razdelnik
grupe.
Zašto je ovo važno: možete napraviti grupu
simbola, sami to ne primećujući. Na primer,
ovako - [:-@] - mislite da
odabirate dvotačku, crticu i znak @, a u
stvari se dobija grupa simbola između
: i @. U ovu grupu spadaju
sledeći simboli: :, ;, ?,
<, =, >.
Odakle su se pojavili? Iz tabele ASCII - dvotačka ima manji broj, nego znak @ - i dobija se grupa. Odnosno sve grupe dobijaju se prema ASCII tabeli (po želji ovime se može koristiti).
Kako se boriti sa ovim: stavite simbol crtice
tamo, gde sigurno neće biti shvaćen kao
simbol grupe, na primer, na početku ili na kraju
(odnosno posle [ ili pre ]).
Možete takođe da ekranizujete crticu - tada
će označavati samu sebe nezavisno od
pozicije. Na primer, umesto [:-@] napisati
[:\-@] - i grupe više neće biti, a
biće tri simbola - dvotačka, crtica i znak @.
Primer
U sledećem primeru šablon pretrage je sledeći:
cifra 1, zatim slovo od 'a'
do 'z', zatim cifra 2:
<?php
$str = '1a2 1-2 1c2 1z2';
$res = preg_replace('#1[a-z]2#', '!', $str);
?>
Kao rezultat u promenljivu će se upisati sledeće:
'! 1-2 ! !'
Primer
Hajde sada da ekranizujemo crticu. Kao rezultat
šablon pretrage je sledeći: cifra 1, zatim
slovo 'a', ili crtica, ili slovo 'z',
zatim cifra 2:
<?php
$str = '1a2 1-2 1c2 1z2';
$res = preg_replace('#1[a\-z]2#', '!', $str);
?>
Kao rezultat u promenljivu će se upisati sledeće:
'! ! 1c2 !'
Primer
Možete jednostavno premeštati crticu, ne ekranizujući je:
<?php
$str = '1a2 1-2 1c2 1z2';
$res = preg_replace('#1[az-]2#', '!', $str);
?>
Kao rezultat u promenljivu će se upisati sledeće:
'! ! 1c2 !'
Primer
U sledećem primeru šablon pretrage je sledeći:
prvi simbol - to su mala slova ili
crtica '-', pa dva slova 'x':
<?php
$str = 'axx Axx -xx @xx';
$res = preg_replace('#[a-z-]xx#', '!', $str);
?>
Kao rezultat u promenljivu će se upisati sledeće:
'! Axx ! @xx'
Primer
U sledećem primeru šablon pretrage je sledeći:
prvi simbol - to su mala, velika
slova ili crtica '-', pa dva slova
'x':
<?php
$str = 'axx Axx -xx @xx';
$res = preg_replace('#[a-zA-Z-]xx#', '!', $str);
?>
Kao rezultat u promenljivu će se upisati sledeće:
'! ! ! @xx'
Primer
Možete rasporediti crticu između dve grupe - tamo ona sigurno neće napraviti još jednu grupu:
<?php
$str = 'axx 9xx -xx @xx';
$res = preg_replace('#[a-z-0-9]xx#', '!', $str);
?>
Kao rezultat u promenljivu će se upisati sledeće:
'! ! ! @xx'
Praktični zadaci
Data je sledeći string:
<?php
$str = 'xaz xBz xcz x-z x@z';
?>
Pronađite sve stringove prema sledećem šablonu:
slovo 'x', veliko ili malo
slovo ili crtica, slovo 'z'.
Data je sledeći string:
<?php
$str = 'xaz x$z x-z xcz x+z x%z x*z';
?>
Pronađite sve stringove prema sledećem šablonu:
slovo 'x', zatim ili dolar, ili
crtica ili plus, pa slovo 'z'.