PHP-ի ռեգուլյար արտահայտություններում հատուկ նիշերի էկրանավորում
Ենթադրենք, որ մենք ուզում ենք, որ հատուկ նիշը նշանակի ինքն իրեն: Դրա համար այն պետք է էկրանավորել հակադարձ շեղի միջոցով: Եկեք նայենք օրինակներով:
Օրինակ
Հաջորդ օրինակում ռեգուլյար արտահայտության հեղինակը ուզում էր,
որ որոնման ձևանմուշը այսպիսի տեսք ունենա. տառ
'a', ապա պլյուս '+', ապա
տառ 'x': Սակայն, կոդի հեղինակը
չէկրանավորեց '+' նիշը, և այդ պատճառով
որոնման ձևանմուշը իրականում այսպիսի տեսք ունի.
տառ 'a' մեկ կամ ավելի անգամ, հետո
տառ 'x':
<?php
$str = 'a+x ax aax aaax';
$res = preg_replace('#a+x#', '!', $str);
?>
Արդյունքում փոփոխականի մեջ կգրվի հետևյալը.
'a+x ! ! !'
Օրինակ
Իսկ այժմ հեղինակը էկրանավորել է պլյուսը հակադարձ
շեղով: Այժմ որոնման ձևանմուշը այնպիսի տեսք ունի,
ինչպես պետք է. տառ 'a', ապա պլյուս
'+', ապա տառ 'x':
<?php
$str = 'a+x ax aax aaax';
$res = preg_replace('#a\+x#', '!', $str);
?>
Արդյունքում փոփոխականի մեջ կգրվի հետևյալը.
'! ax aax aaax'
Օրինակ
Այս օրինակում ձևանմուշը այսպիսի տեսք ունի. տառ
'a', ապա կետ '.', ապա
տառ 'x':
<?php
$str = 'a.x abx azx';
$res = preg_replace('#a\.x#', '!', $str);
?>
Արդյունքում փոփոխականի մեջ կգրվի հետևյալը.
'! abx azx'
Օրինակ
Հաջորդ օրինակում հեղինակը մոռացել է էկրանավորել կետը, և ռեգուլյար արտահայտությանը համապատասխանել են բոլոր ենթատողերը, քանի որ չէկրանավորված կետը նշանակում է ցանկացած նիշ.
<?php
$str = 'a.x abx azx';
$res = preg_replace('#a.x#', '!', $str);
?>
Արդյունքում փոփոխականի մեջ կգրվի հետևյալը.
'! ! !'
Օրինակ
Ուշադրություն դարձրեք, որ եթե դուք մոռանաք հակադարձ շեղը կետի համար (երբ այն պետք է նշանակի ինքն իրեն) - դա կարելի է նույնիսկ չնկատել.
<?php
preg_replace('#a.x#', '!', 'a.x'); // կվերադարձնի '!', ինչպես մենք էլ ուզում էինք
?>
Տեսողականորեն աշխատում է ճիշտ (քանի որ կետը
նշանակում է ցանկացած նիշ, ներառյալ սովորական
կետը '.'): Բայց եթե փոխենք այն տողը,
որում կատարվում են փոխարինումները - մենք կտեսնենք մեր
սխալը.
<?php
preg_replace('#a.x#', '!', 'a.x abx azx'); // կվերադարձնի '! ! !', իսկ սպասվում էր '! abx azx'
?>