Convierta una función de preg_replace a preg_replace_callback ()

Necesito convertir preg_replace () en preg_replace_callback () en esta función de una extensión de CMS obsoleta:

// santizes a regex pattern
private static function sanitize( $pattern, $m = false, $e = false ) {
    if( preg_match( '/^\/(.*)([^\\\\])\/(.*?)$/', $pattern, $matches ) ) {
        $pat = preg_replace(
            '/([^\\\\])?\(\?(.*\:)?(.*)\)/Ue',
            '\'$1(?\' . self::cleanupInternal(\'$2\') . \'$3)\'',
            $matches[1] . $matches[2]
        );
        $ret = '/' . $pat . '/';
        if( $m ) {
            $mod = '';
            foreach( self::$modifiers as $val ) {
                if( strpos( $matches[3], $val ) !== false ) {
                    $mod .= $val;
                }
            }
            if( !$e ) {
                $mod = str_replace( 'e', '', $mod );
            }
            $ret .= $mod;
        }
    } else {
        $pat = preg_replace(
            '/([^\\\\])?\(\?(.*\:)?(.*)\)/Ue',
            '\'$1(?\' . self::cleanupInternal(\'$2\') . \'$3)\'',
            $pattern
        );
        $pat = preg_replace( '!([^\\\\])/!', '$1\\/', $pat );
        $ret = '/' . $pat . '/';
    }
    return $ret;
}

Solo puedo imaginar lo que hace esta función. Intenté esto pero no funcionó:

private static function sanitize( $pattern, $m = false, $e = false ) {
    if( preg_match( '/^\/(.*)([^\\\\])\/(.*?)$/', $pattern, $matches ) ) {
        $pat = preg_replace_callback(
            '/([^\\\\])?\(\?(.*\:)?(.*)\)/U',
            function($matches) {return CallFunction('\'$1(?\' . self::cleanupInternal(\'$2\') . \'$3)\''); },
            $matches[1] . $matches[2]
        );
        $ret = '/' . $pat . '/';
        if( $m ) {
            $mod = '';
            foreach( self::$modifiers as $val ) {
                if( strpos( $matches[3], $val ) !== false ) {
                    $mod .= $val;
                }
            }
            if( !$e ) {
                $mod = str_replace( 'e', '', $mod );
            }
            $ret .= $mod;
        }
    } else {
        $pat = preg_replace_callback(
            '/([^\\\\])?\(\?(.*\:)?(.*)\)/U',
        function($matches) {return CallFunction('\'$1(?\' . self::cleanupInternal(\'$2\') . \'$3)\''); },
            $pattern
        );
        $pat = preg_replace( '!([^\\\\])/!', '$1\\/', $pat );
        $ret = '/' . $pat . '/';
    }
    return $ret;
}

¿Alguien podría ayudarme en esto?

Respuestas a la pregunta(1)

Su respuesta a la pregunta