Ескреивање специјалних карактера у регуларним изразима у PHP-у

Претпоставимо да желимо да се постигне да специјални карактер представља самог себе. За то га треба ескреивати користећи обрнуту косу црту. Хајде да погледамо на примерима.

Пример

У следећем примеру аутор регуларног израза је желео да шаблон за претрагу изгледа овако: слово 'a', затим плус '+', затим слово 'x'. Међутим, аутор кода није ескреирао симбол '+' и зато шаблон за претрагу заправо изгледа овако: слово 'a' један или више пута, затим слово 'x':

php<?php
  $str = 'a+x ax aax aaax';
  $res = preg_replace('#a+x#', '!', $str);
?>

Као резултат у променљиву ће се уписати следеће:

php'a+x ! ! !'

Пример

А сада је аутор ескреирао плус обрнутом косом цртом. Сада шаблон за претрагу изгледа тако како треба: слово 'a', затим плус '+', затим слово 'x'.

php<?php
  $str = 'a+x ax aax aaax';
  $res = preg_replace('#a\+x#', '!', $str);
?>

Као резултат у променљиву ће се уписати следеће:

php'! ax aax aaax'

Пример

У овом примеру шаблон изгледа овако: слово 'a', затим тачка '.', затим слово 'x':

php<?php
  $str = 'a.x abx azx';
  $res = preg_replace('#a\.x#', '!', $str);
?>

Као резултат у променљиву ће се уписати следеће:

php'! abx azx'

Пример

А у следећем примеру аутор је заборавио да ескреира тачку и регуларни израз је обухватио све поднизове, јоб не-ескреирана тачка представља било који карактер:

php<?php
  $str = 'a.x abx azx';
  $res = preg_replace('#a.x#', '!', $str);
?>

Као резултат у променљиву ће се уписати следеће:

php'! ! !'

Пример

Обратите пажњу на то да ако заборавите обрнуту косу црту за тачку (када она треба да представља саму себе) - то се може чак и не приметити:

php<?php
  preg_replace('#a.x#', '!', 'a.x'); // вратиће '!', као што смо и желели
?>

Визуелно ради исправно (јер тачка представља било који карактер, укључујући и обичну тачку '.'). Али ако променимо стринг, у ком се врше замене - видећемо нашу грешку:

php<?php
  preg_replace('#a.x#', '!', 'a.x abx azx'); // вратиће '! ! !', а очекивало се '! abx azx'
?>