# Проблема обратного слеша в PHP

Обратный слеш является спецсимволом PHP. Это значит, что в строке, если мы хотим, чтобы слеш обозначал сам себя, мы должны его удвоить:

`<?php $str = '\\ \\\\ \\\\\\'; // на самом деле строка '\ \\ \\\' ?>`

Обратный слеш также является и спецсимволом регулярок. Это значит, что внутри регулярки, чтобы слеш обозначал сам себя, его нужно написать аж четыре раза:

`<?php echo preg_replace('#\\\\#', '!', '\\ \\\\ \\\\\\'); // выведет '! ! !!' ?>`

Давайте теперь напишем регулярку, в которой шаблон поиска будет такой: обратный слеш один или более раз. В таком случае мы напишем оператор + аж для `4` символов перед ним без группировки:

`<?php echo preg_replace('#\\\\+#', '!', '\\ \\\\ \\\\\\'); // выведет '! ! !' ?>`

Дана строка:

`<?php $str = 'a\\b c\\d e\\f'; ?>`

Найдите в этой строке все подстроки по шаблону буква, обратный слеш, буква.

Дана строка:

`<?php $str = 'a\\b c\\\\d e\\\\\\f'; ?>`

Найдите в этой строке все подстроки по шаблону буква, обратный слеш любое количество раз, буква.

← →
↑