La función que mencionas usa "Expresiones regulares" .. El tema de "expresiones regulares" tiene su própio "lenguaje" de códigos que así lo debe intepretar para seguir tu patrón dado. Por ejemplo ... para las expresiones regulaes un [ (y un ] .. incluso el $ que tienes por ahí por médio) significan algo .. Sólo NO serán considerados como "códigos" si los "escapas" con un \ delante del caracter que pueda ser un "código" como expresión regular.
Tienes dos opciones:
1) Ver como usar expresiones regulares (por ejemplo para mejorar incluso tu patrón de sustitución que pretendes hacer).
2) NO usar funciones de expresiones regulares sino de cadenas simples para ese tipo de sustituciones, por ejemplo .. usa: str_replace() en lugar de eregi_replace() o equivalente.
Si quieres leer sobre expresiones regulares:
http://www.ignside.net/man/php/regex.php
Un saludo,