Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Обратный слеш (https://javascript.ru/forum/server/71100-obratnyjj-slesh.html)

DivMan 26.10.2017 00:16

Обратный слеш
 
Надо это a\a заменить на !

Вот рабочий код

echo preg_replace('#a\\\a#', '!', 'a\a abc');


Почему работает с тремя слешами, если должно работать только с четырьмя?
2 раза для PHP и два раза для регулярки.

ruslan_mart 26.10.2017 05:49

DivMan, PHP - не JS. Там и двух слешей хватит.

akiraki22lvl 19.09.2025 18:03

Потому что слэши "съедаются" на разных уровнях. В PHP строках \\ превращается в один обратный слэш. То есть в регулярку реально попадает a\\a. А уже внутри регулярок \\ трактуется как один \. В итоге шаблон ищет именно a\a, и совпадение находится.
Если бы писал четыре слэша в строке (a\\\\a), то в регулярку попало бы a\\a и всё равно результат был бы тем же. Три слэша — минимально достаточно для нужного эффекта.


Часовой пояс GMT +3, время: 15:06.