mira lo que quieres hjacer se hace con arrays debes desarrollar un funcion similar a la que planteaste recorriendo arrays y poniendo condiciones sobre donde debe cortar la "cadena" ya sea:
]EyeShield 21[/size:fc487]
[a_img=:fc487]
o cualquier otra que te plantees lo que debes tener en consideracion es que estas "etiquetas" tienen ciertos rasgos que te van a ayudar a reconocerlas dentro del texto:
A continuacion te dejo un link donde encuentras muchas funciones de php justamente para menejo de arreglos espero sea de ayuda ...
http://cl.php.net/manual/es/ref.array.php
Saludos y mucha suerte.