ты этим скриптом не исходную строку обрабатываешь!
нету в РНР функций таких - обрабатывать, не обрабатывать.
ты вырезаешь по кусочку из исходной строки, и добавляешь в новую!
вот строка
aaabbb
в процессе работы скрипта у тебя будет три итерации.
новая строка будет выглядеть так:
1.aaa
2.aaa
3.aaabbb
это если без обработки.
как тебе еще объяснить?
взял кусок из первой, посмотрел - если не тег, то обработал, и приставил к новой строке.
потом следующий кусок взял - и так до конца строки.
тебе нужно всего две функции - strpos с третьим параметром и substr