preg_replace: вопрос про слеши в replacement

SMiX

Новичок
preg_replace: вопрос про слеши в replacement

Нужно экранировать слешом в строке символы [ ] и пробел. Делаю так:

PHP:
$name = preg_replace('~([\s\[\]])~isS', '\\\\$1', $name);
Но ума не приложу, почему такой вариант:
PHP:
$name = preg_replace('~([\s\[\]])~isS', '\\$1', $name);
Ничего не заменяет, и на выходе получается исходная строка.

Или я чего-то не понимаю, или это баг, связанный с не учтённой внутренней возможно, (частично)лишней обработкой слешей
 
потому что, ты заменяешь всё что лежит в кармане - между скобками, на тоже самое...
и чо слешей помоему у тебя мнговато там...
 

SMiX

Новичок
так как раз вариант с четырьмя слешами работает верно.
Строка "[ p" Заменяется на "\[\ p"
 
Сверху