Kutazama Mbele katika Regular PHP
Wakati mwingine inahitajika kutatua tatizo la aina hii: pata
msururu 'aaa' na uibadilishe kuwa '!',
lakini tu ikiwa baada ya 'aaa' kuna
'x', na 'x' yenyewe isibadilishwe.
Kama tutajaribu kutatua tatizo hilo
'moja kwa moja', hatitafanikiwa:
<?php
preg_replace('#aaax#', '!', 'aaax'); // itakuwa '!', lakini inapaswa kuwa '!x'
?>
Ili kutatua tatizo, unahitaji njia ya kusema
kwamba 'x' haipaswi kubadilishwa. Hii
inafanywa kwa kutumia mabano maalum (?= ),
ambayo hutazama tu, lakini haichukui pamoja nayo.
Mabano haya yanaitwa kutazama mbele chanya
. Chanya - kwa sababu 'x'
(katika kesi yetu) inapaswa kuwepo - ndio tu
badilisha litakalofanyika.
Wacha tutumie mabano haya kutatua tatizo letu:
<?php
preg_replace('#aaa(?=x)#', '!', 'aaax'); // itarudisha '!x'
?>
Kuna pia kutazama mbele hasi
- (?! ) - hii, kinyume chake, inasema kwamba
kitu fulani hakipaswi kuwepo. Katika mfano ufuatao
badilisha litatokea, tu ikiwa baada ya 'aaa'
hakuna 'x':
<?php
preg_replace('#aaa(?!x)#', '!', 'aaab'); // itarudisha '!b'
?>
Kuna msururu ulio na majina ya vitendaji:
<?php
$str = 'func1() func2() func3()';
?>
Pata safu ya majina ya vitendaji kutoka kwenye msururu.
Kuna msururu wenye kitambulishi:
<?php
$str = '<a href="" class="eee" id="zzz">';
?>
Pata safu ya majina ya sifa za kitambulishi hiki.