Ну, когда мне нужно сделать что-то подобное, я использую preg_replace или preg_replace_callback ..
function videofunction($input){
//do something here and then:
return $whatever;
}
$content = preg_replace('%\[video(.*?)\]%e', 'videofunction("\\1")', $content);
Тогда вы должны придумать логику, хотя =)
Edit:
Просто прочитайте ваш пост больше ...
Вы хотите оставить тег как есть, и добавить что-нибудь после него ..
Вы можете сделать это с помощью preg replace .. вот так:
function videofunction($input){
$input .= "whatever else";
return $input;
}
preg_replace('%\[video.*?\]%e', 'videofunction("\\0")', $content);
Вероятно, не лучший способ сделать это, хотя, может быть, какой-то захват смещения будет лучше?