<?
$text = "10|updatePanel|h2.header|Привет мир|20|updatePanel|p.search|Элементов не найдено|0|deleteBox|#results||";
$array = array();
while(mb_strlen($text)>0) { // повторяем, пока текст не пустой
// разбиваем на части. первые 3 части - строго определены, остальные - мб винегрет, но нам это неважно
$data = explode('|', $text);
// Определяем строку, после которой нужно выделять основной текст
$str = "{$data[0]}|{$data[1]}|{$data[2]}|";
// Вырезаем текст "Привет мир". Начинаем с конца первых 3 элементов (начало строки $str + длина $str)
// вырезаем количество символов, которое было указано в первом элементе
$data[3] = substr($text, (strpos($text, $str) + mb_strlen($str)), $data[0]);
// Заносим в массив
$array[$data[1]][$data[2]] = $data[3];
// Вырезаем занесенное из текста и переходим к следующей итерации
$text = str_replace($str.$data[3], '', $text, 1)
}
?>