יש שם מצב לקוד לא תקין? כלומר, דברים שלא סגורים נכון? למרות שאתה יכול לעשות גם לזה בדיקה
אבל לדעתי הדרך של יגאל די נוחה במקרה הזה, אתה בונה מערך (preg_match_all) מהתגיות פתיחה, בונה עוד מערך מהתגיות סגירה (פה אתה יכול לבדוק אם הכמות איברים זהה ולדעת גם אם יש דברים לא סגורים)
ואז אתה מחפש את <some do="font">, ברגע שנתקלת בו אתה מחליף באותו אינדקס במערך של התגיות סגירה את התגית ל-[/font] ויוצא מהלולאה
ד"א - כדאי לך לשאול גם ב-
StackOverflow הגיוני שיש ביטוי רגולארי שיתאים לזה יותר