tendrías que buscar el siguiente ^, con strpos y poniendo que empiece a buscar a partir del último ^ (fijate en
www.php.net/strpos)
Luego, en la posición en la que encuentra el siguiente ^agregás el </font>
Edito:
No suelo dar soluciones completas, pero el tema de las expresiones regulares realmente me gusta

Probá esto a ver si es lo que necesitas:
Código PHP:
echo ereg_replace('\^([0-9]{6})', '</font><font color="\\1">', "
A potion which restores ^000088HP about 145^000000, made from grinded red herbs.
^ffffff_^000000
Weight : ^7777777^000000");
Saludos.