⊗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'.

Български
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
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне