PHP тұрақты өрнектеріндегі бұйра жақшалар
+, *, ? операторлары жақсы,
бірақ олардың көмегімен нақты қайталау санын
көрсету мүмкін емес. Бұл жағдайда сізге {}
операторы көмекке келеді.
Ол келесідей жұмыс істейді: {5}
- бес рет қайталау, {2,5} - екіден беске дейін
қайталанады (екеуі де қоса алғанда), {2,}
- екі және одан да көп рет қайталанады.
Мысал
Бұл мысалда іздеу шаблоны келесідей:
'x' әрпі, 'a' әрпі бір
немесе екі рет, 'x' әрпі:
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{1,2}x#', '!', $str);
?>
Нәтижесінде айнымалыға мынаны жазады:
'xx ! ! xaaax'
Мысал
Бұл мысалда іздеу шаблоны келесідей:
'x' әрпі, 'a' әрпі екі
рет және одан да көп, 'x' әрпі:
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{2,}x#', '!', $str);
?>
Нәтижесінде айнымалыға мынаны жазады:
'xx xax ! !'
Мысал
Бұл мысалда іздеу шаблоны келесідей:
'x' әрпі, 'a' әрпі үш
рет, 'x' әрпі:
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{3}x#', '!', $str);
?>
Нәтижесінде айнымалыға мынаны жазады:
'xx xax xaax !'
Мысал
Бұл мысалда іздеу шаблоны келесідей:
'a' әрпі он рет:
<?php
$str = 'aaa aaaaaaaaaa aaa';
$res = preg_replace('#a{10}#', '!', $str);
?>
Нәтижесінде айнымалыға мынаны жазады:
'aaa ! aaa'
Мысал
Бұл мысалда код авторы келесі шаблонды қалаған:
'x' әрпі, 'a' әрпі үз
рет және одан аз, 'x' әрпі,
бірақ, өкінішке орай, мұндай - {,3} -
жұмыс істемейді. Анық көрсету керек:
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{1,3}x#', '!', $str);
?>
Нәтижесінде айнымалыға мынаны жазады:
'xx ! ! !'
Мысал
Нөл де рұқсат етілген:
<?php
$str = 'xx xax xaax xaaax';
$res = preg_replace('#xa{0,3}x#', '!', $str);
?>
Нәтижесінде айнымалыға мынаны жазады:
'! ! ! !'
Практикалық есептер
Мына жол берілген:
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
'abba', 'abbba', 'abbbba'
жолдарын және оларды ғана табатын
тұрақты өрнек жазыңыз.
Мына жол берілген:
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
'aba' түріндегі жолдарды табатын
тұрақты өрнек жазыңыз, онда 'b' үштен
аз (қоса алғанда) ұшырасады.
Мына жол берілген:
<?php
$str = 'aa aba abba abbba abbbba abbbbba';
?>
'aba' түріндегі жолдарды табатын
тұрақты өрнек жазыңыз, онда 'b' төрттен
көп (қоса алғанда) ұшырасады.