В качестве ограничителей могут выступать
не только #
, но и любые другие символы
(только не буквы и не цифры).
К примеру, возьмем в качестве ограничителей символы амперсандов:
<?php
echo preg_replace('&а+&', '!', 'строка');
?>
Если используются скобки, тогда левый ограничитель - это открывающая скобка, а правый - закрывающая:
<?php
echo preg_replace('(а+)', '!', 'строка');
?>
Используйте в качестве ограничителей символ
тильды ~
.
Экранировка ограничителей
Если символ не является специальным, то, когда вы используете его в качестве ограничителя, его нужно будет экранировать в самой регулярке. Посмотрим на примере.
Пусть у нас в качестве ограничителей выступают решетки, а внутри регулярки мы ищем символ амперсанда. Так как амперсанд не является спецсимволовм, то мы его не экранируем:
<?php
echo preg_replace('#a&b#', '!', 'a&b'); // выведет '!'
?>
Пусть теперь ограничители - амперсанды и внутри регулярки нам также нужен амперсанд. В таком случае амперсанд внутри приходится экранировать, иначе это вызовет ошибку PHP:
<?php
echo preg_replace('&a\&b&', '!', 'a&b'); // выведет '!'
?>
Исправьте ошибку, допущенную в следующем коде:
<?php
echo preg_replace('#a#b#', '!', 'a#b');
?>