Запіс на курсы па HTML, CSS, JavaScript, PHP, Python, фрэймворкам і CMS,
а таксама: дапамога ў пошуку працы і заказаў, стажыроўка на рэальных праектах→
⊗ppPmRgSHy 238 of 447 menu

Злучок унутры набораў у рэгулярках 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'.

byenru