<body>
<div class="abc">
<? if(true)
{
mysql_connect();
?><body>
<div class="def"> <?}else{ $a="<b>blablabla</b>"
}?>
</div>
В выражении $a="<b>blablabla</b>" парсило всё, как обычное html, а не как php. Лечится вставками во все места, куда не лень комбинации ?> <? и лишних переносов строк, а также стиранием каких-либо других переносов, в общем, магия.
Если просто вставить этот код, и всё будет нормально, то надо поставить перенос строки перед $a=
Довольно часто в таких сложных комбинациях php+html (в шаблонах, например), слетает подсветка php, всё становится обычным черным цветом, кроме тегов, ежели они присутствуют в строках, например.