You have to remove brackets only from the beginning or end of the string; in which case, preg_replace works. The trim is easier and makes more sense.
preg_replace() - Removes beginning and trailing brackets.
$widget_id = preg_replace(array('/^\[/','/\]$/'), '',$widget_text);
str_replace() - Removes brackets anywhere in the text.
$widget_id = str_replace(array('[',']'), '',$widget_text);
trim() - Trims brackets from beginning and end.
$widget_id = trim($widget_text,'[]')
substr() - Does the same as trim() (assuming the widget text does not include any closing brackets within the text).
$widget_id = substr($widget_text,
$start = strspn($widget_text, '['),
strcspn($widget_text, ']') - $start
);
I hope this helps you.