⊗ppPmRgESCh 226 of 447 menu

Экраноўка спецсімвалаў у рэгулярках 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' ?>
Беларуская
AfrikaansAzərbaycanБългарскиবাংলাČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Мы выкарыстоўваем cookie для працы сайта, аналітыкі і персаналізацыі. Апрацоўка дадзеных адбываецца згодна Палітыкай канфідэнцыяльнасці.
прыняць усе наладзіць адхіліць