Priešingo žvilgsnio reguliariosios išraiškos PHP
Kartais reikia išspręsti tokio tipo uždavinį: rasti
eilutę 'aaa' ir pakeisti ją į '!',
bet tik jei po 'aaa' yra
'x', o pats 'x' tuo pačiu
nepakeisti. Jei bandysime išspręsti uždavinį
'tiesiogiai', mums nepavyks:
<?php
preg_replace('#aaax#', '!', 'aaax'); // bus '!', o turi būti '!x'
?>
Uždaviniui išspręsti reikia būdo pasakyti,
kad 'x' neturėtų būti pakeistas. Tai daroma
naudojant specialiuosius skliaustus (?= ),
kurie tik žiūri, bet nepasigamina.
Šie skliaustai vadinami teigiamu priešingu žvilgsniu
forward. Teigiamas - kadangi 'x'
(mūsų atveju) turi būti - tik tada
įvyks pakeitimas.
Panaudokime šiuos skliaustus mūsų uždaviniui išspręsti:
<?php
preg_replace('#aaa(?=x)#', '!', 'aaax'); // grąžins '!x'
?>
Yra ir neigiamas priešingas žvilgsnis
forward
- (?! ) - jis, atvirkščiai, sako, kad
kažko turi nebūti. Šiame pavyzdyje
pakeitimas įvyks, tik jei po 'aaa'
nėra 'x':
<?php
preg_replace('#aaa(?!x)#', '!', 'aaab'); // grąžins '!b'
?>
Duota eilutė, kurioje yra funkcijų pavadinimai:
<?php
$str = 'func1() func2() func3()';
?>
Gaukite funkcijų pavadinimų masyvą iš eilutės.
Duota eilutė su tagu:
<?php
$str = '<a href="" class="eee" id="zzz">';
?>
Gaukite šio tago atributų pavadinimų masyvą.