De hecho preg_replace_callback() es totalmente innecesario.
Con preg_replace() debe bastar, sin embargo puede que la expresión regular este mal:
Código PHP:
Ver original// MAL (sin delimitadores)
// BIEN (con delimitadores)
Además los corchetes [] no soportan operadores OR, para eso debes usar una captura.
Por favor consulta una referencia de expresiones regulares.