you can achieve this with:
$pattern = '/\[(?!")([^]]+)(?<!")\]/';
$replacement = '["$1"]';
$new_string = preg_replace($pattern, $replacement, $old_string);
the preg_replace will search for the pattern in the old string and replace following the pattern defined
PS.: this site is excellent to test regex patterns