Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
Так?
1. Находим первый попавший тег и его позицию
2. Передаем этот тег и его позицию в функцию
3. В функции ищем тег-пару с переданной позиции
4. Если находим другой закрывающий тег, делаем return false;
5. Если находим закрывающий тег-пару - return true;
6. Если находим другой открывающий тег - вызываем себя с эитм тегом и его позицией.
7. Если хоть раз вернулся return false - ошибка
Тогда стой функцию как сказал Eugene Bond, и проверяй рег. выражениями на парность тегов, что бы после открывающего шел закрывающий и т.д.
Только вот с внутренними тегами будет сложнее.
1. Нашел тег - запхал его в массив
2. Нашел еще один тег - запхал его в массив
3. Нашел закрывающий тег - взял последний из массива и сравнил. Если совпали - стер последний из массива. Если не совпали - ERROR.
Сканируем текст. Если встретили открвающий тэг -- кладем его в стек. Если встретили закрывающий -- снимаем тэг со стека и сравниваем. Не совпали -- ошибка.