Мое предложение:
Замените [
и ]
на <
и >
, затем преобразуйте эту строку в объект XML с использованием SimpleXML
и получите доступ к caption
как свойству созданного объекта.
$input = '[caption id="attachment_123" align="alignleft" width="100" caption="This is the text that I want"]';
$input = str_replace(array('[', ']'), array('<', '>'), $input);
$object = new SimpleXML($input);
echo $object->caption;
Чисто и просто. Regexp
и HTML
/ BBCode
болезненны.