PHP-də requlyar ifadələrdə irəli baxış
Bəzən bu tip məsələni həll etmək lazım gəlir: sətiri 'aaa' tap
və onu '!' ilə əvəz et,
lakin yalnız 'aaa'-dən sonra
'x' gəlirsə, özü 'x' isə
əvəz edilməməlidir. Əgər biz məsələni 'birbaşa'
həll etməyə çalışsaq, heç nə alınmayacaq:
<?php
preg_replace('#aaax#', '!', 'aaax'); // alınacaq '!', lazımdır '!x'
?>
Məsələni həll etmək üçün, demək lazımdır ki,
'x' əvəz edilməməlidir. Bu,
xüsusi mötərizələr (?= ) ilə edilir,
onlar yalnız baxır, lakin özləri ilə götürmürlər.
Bu mötərizələr müsbət irəli baxış adlanır.
Müsbət - çünki 'x'
(bizim vəziyyətimizdə) olmalıdır - yalnız o zaman
əvəzetmə baş verəcək.
Gəlin bu mötərizələri bizim məsələni həll etmək üçün tətbiq edək:
<?php
preg_replace('#aaa(?=x)#', '!', 'aaax'); // qaytaracaq '!x'
?>
Həm də mənfi irəli baxış var
- (?! ) - o, əksinə, deyir ki,
nə isə olmamalıdır. Aşağıdakı nümunədə
əvəzetmə yalnız 'aaa'-dən sonra
'x' olmadıqda baş verəcək:
<?php
preg_replace('#aaa(?!x)#', '!', 'aaab'); // qaytaracaq '!b'
?>
Funksiya adlarını ehtiva edən sətir verilmişdir:
<?php
$str = 'func1() func2() func3()';
?>
Sətirdən funksiya adlarının massivini alın.
Teq ilə sətir verilmişdir:
<?php
$str = '<a href="" class="eee" id="zzz">';
?>
Bu tegin atribut adlarının massivini alın.