В php есть функция для разделения строки с помощью разделителей регулярных выражений, например preg_match, preg_match_all, ищите их.
Если у вас есть список слов, вы можете разбить строку следующим образом (очевидно, можно было бы написать ее намного лучше):
$words = array('[text1]','[text2]','[text3]');
$str = "[text1] some content [text2] some content some content [text3] some content3";
for ($i=0; $i<sizeof($words) ; $i++) {
$olddel = $del;
$del = $words[$i];
list($match,$str) = explode($del,$str);
if ($i-1 >= 0) { $matches[$i-1] = $olddel.' '.$match; }
}
$matches[] =$del." ".$str;
print_r($matches);
Будет выведено: Array ( [0] => [text1] some content [1] => [text2] some content some content [2] => [text3] some content3 )