სპეციალური სიმბოლოების ეკრანირება 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'
?>