Как вы заметили, $
обрабатывается для интерполяции переменных внутри строк в двойных кавычках. Таким образом, ваш шаблон регулярного выражения должен быть построен с использованием одинарных строк в кавычках. Кроме того, $
является специальным символом внутри строки замены регулярного выражения, поэтому вам нужно его дополнительно экранировать:
preg_replace('/\$/', '\\\\$', $text)
Но здесь нет необходимости в функции preg_. str_replace должен это сделать:
str_replace('$', '\\$', $text)
Это может прояснить ситуацию для вас, но, как предлагает Гамбо: почему бы не использовать одинарные кавычки для эха?