Аломатҳои махсусро дар регуляриҳои 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' интизор мешуд
?>