preg_replace и $11

Линка

Новичок
preg_replace и $11

$str='222ss222222';
$val='$111';
echo preg_replace('~ss~',$val,$str);

почему то вместо ожидаемой 222$111222222 на выходе 2221222222
тоесть теряется знак $ и 11
самое интересное, что если после $ стоят не цифры, то все заменяется
а вот если цифры (любые) то "затирается" знак $ и этии самые цифры
замечено что затирает только $ и две цифры, тоесть третья появится

если заслешить доллар то все ок

Почему так?
 
Сверху