Дефис дар дохили маҷмӯаҳо дар регуляриҳои PHP
Дефис - низ аломати махсус дар дохили []
(вале берун аз он - не). Агар ба шумо худи дефис лозим бошад - онро ҷое гузоред,
ки дар он ҷо ҳамчун ҷудокунандаи гурӯҳ дарназар гирифта нашавад.
Чаро ин муҳим аст: шумо метавонед гурӯҳи аломатҳоро бидуни он ки худатон қайд кунед, эҷод кунед. Масалан,
ин тавр - [:-@] - шумо фикр мекунед, ки
дунуқта, дефис ва аломати @-ро интихоб мекунед, вале
дар асл гурӯҳи аломатҳои миёнаи
: ва @ ба даст меояд. Ин гурӯҳ аломатҳои зеринро дар бар мегирад:
:, ;, ?,
<, =, >.
Онҳо аз куҷо омадаанд? Аз ҷадвали ASCII - дунуқта рақами хурдтар аз аломати @ дорад - ва гурӯҳ ба даст меояд. Яъне ҳама гурӯҳҳо мувофиқи ҷадвали ASCII ба даст меоянд (агар хоҳед аз ин истифода бурдан мумкин аст).
Чӣ тавр бо ин мубориза барем: аломати дефисиро
дар ҷое гузоред, ки албатта ҳамчун аломати гурӯҳ дарназар гирифта нашавад, масалан, дар аввал ё дар охир
(яъне пас аз [ ё пеш аз ]).
Инчунин метавон дефисро экрон кард - онгоҳ
ҳар ҷои ки бошад ҳам, худро ифода мекунад.
Масалан, ба ҷои [:-@] нависед
[:\-@] - ва дигар гурӯҳе нест, ва
се аломат хоҳад буд - дунуқта, дефис ва аломати @.
Намуна
Дар намунаи навбатӣ нақшаи ҷустуҷӯ ин аст:
рақами 1, сипас ҳарфи аз 'a'
то 'z', сипас рақами 2:
<?php
$str = '1a2 1-2 1c2 1z2';
$res = preg_replace('#1[a-z]2#', '!', $str);
?>
Дар натиҷа ба тағирёбанда зерин сабт мешавад:
'! 1-2 ! !'
Намуна
Биёед акнун дефисро экрон кунем. Дар натиҷа
нақшаи ҷустуҷӯ ин аст: рақами 1, сипас
ҳарфи 'a', ё дефис, ё ҳарфи 'z',
сипас рақами 2:
<?php
$str = '1a2 1-2 1c2 1z2';
$res = preg_replace('#1[a\-z]2#', '!', $str);
?>
Дар натиҷа ба тағирёбанда зерин сабт мешавад:
'! ! 1c2 !'
Намуна
Метавон танҳо ҷои дефисро тағир дод, бе он ки экрон карда шавад:
<?php
$str = '1a2 1-2 1c2 1z2';
$res = preg_replace('#1[az-]2#', '!', $str);
?>
Дар натиҷа ба тағирёбанда зерин сабт мешавад:
'! ! 1c2 !'
Намуна
Дар намунаи навбатӣ нақшаи ҷустуҷӯ ин аст:
аломати аввал - ин ҳуруфҳои хурд ё
дефис '-', сипас ду ҳарфи 'x':
<?php
$str = 'axx Axx -xx @xx';
$res = preg_replace('#[a-z-]xx#', '!', $str);
?>
Дар натиҷа ба тағирёбанда зерин сабт мешавад:
'! Axx ! @xx'
Намуна
Дар намунаи навбатӣ нақшаи ҷустуҷӯ ин аст:
аломати аввал - ин ҳуруфҳои хурд, бузург
ё дефис '-', сипас ду ҳарфи
'x':
<?php
$str = 'axx Axx -xx @xx';
$res = preg_replace('#[a-zA-Z-]xx#', '!', $str);
?>
Дар натиҷа ба тағирёбанда зерин сабт мешавад:
'! ! ! @xx'
Намуна
Метавон дефисро миёни ду гурӯҳ ҷойгир кард - дар он ҷо албатта то ҳол гурӯҳи дигаре намесозад:
<?php
$str = 'axx 9xx -xx @xx';
$res = preg_replace('#[a-z-0-9]xx#', '!', $str);
?>
Дар натиҷа ба тағирёбанда зерин сабт мешавад:
'! ! ! @xx'
Вазифаҳои амалӣ
Сатр дода шудааст:
<?php
$str = 'xaz xBz xcz x-z x@z';
?>
Ҳама сатрҳоро мувофиқи нақшаи зерин ёбед:
ҳарфи 'x', ҳарфи бузург ё хурд
ё дефис, ҳарфи 'z'.
Сатр дода шудааст:
<?php
$str = 'xaz x$z x-z xcz x+z x%z x*z';
?>
Ҳама сатрҳоро мувофиқи нақшаи зерин ёбед:
ҳарфи 'x', сипас ё аломати $, ё
дефис ё аломати +, сипас ҳарфи 'z'.