ВНИМАНИЕ: Запись на курсы по HTML, CSS, JavaScript, PHP, Python, React, Vue, Laravel и другим фреймворкам и CMS,
а также: помощь в поиске работы и заказов, стажировка на реальных проектах→
⊗ppPmRgSHt 237 of 447 menu
Вступайте в телеграмм-канал сайта code.mu: новинки, статьи, интервью, задачи, бесплатные курсы и тренинги. Жми для вступления:)

Символ шляпки внутри наборов в регулярках PHP

Как вы знаете, шляпка внутри [] делает отрицание, будучи написанной в начале скобок. Значит, она является спецсимволом внутри этих скобок. Чтобы получить шляпку как символ, нужно или заэкранировать ее, или убрать с первого места.

Пример

В следующем примере шаблон поиска такой: первый символ - это все кроме 'd', потом две буквы 'x'.

<?php $str = 'axx bxx ^xx dxx'; $res = preg_replace('#[^d]xx#', '!', $str); ?>

В результате в переменную запишется следующее:

'! ! ! dxx'

Пример

А теперь шаблон поиска такой: первый символ - это 'd' или '^', потом две буквы 'x':

<?php $str = 'axx bxx ^xx dxx'; $res = preg_replace('#[d^]xx#', '!', $str); ?>

В результате в переменную запишется следующее:

'axx bxx ! !'

Пример

Можно не убирать шляпку с первого места, а просто заэкранировать ее с помощью обратного слеша, и она станет обозначать саму себя:

<?php $str = 'axx bxx ^xx dxx'; $res = preg_replace('#[\^d]xx#', '!', $str); ?>

В результате в переменную запишется следующее:

'axx bxx ! !'

Практические задачи

Дана строка:

<?php $str = '^xx axx ^zz bkk @ss'; ?>

Напишите регулярку, которая найдет строки по шаблону: шляпка или собака, а затем две латинских буквы.

Дана строка:

<?php $str = '^xx axx ^zz bkk @ss'; ?>

Напишите регулярку, которая найдет строки по шаблону: НЕ шляпка и не собака, а затем две латинских буквы.

Дана строка:

<?php $str = '^xx axx ^zz bkk'; ?>

Напишите регулярку, которая найдет строки по шаблону: НЕ шляпка, а затем две латинских буквы.

byenru