文字列を特定の文字数で区切りたく低下のようにしました。

$limit = 100;
for($i=0;$i<mb_strlen($text);$i+=$limit){
$array[] = mb_substr($text,$i,$limit);
}

これで区切れるのですが、$textにHTMLが混入されている場合
表示がおかしくなってしまいます。
何か良い方法はないでしょうか?