こんな感じでいいかな?無理矢理切り取ってきた糞ソースですまん。

$textが置き換え対象
この場合は80文字で改行とチンチンを挿入
場合によってはreturnで戻す前に'<br />' . $tempurlをいれてください。

$tangoregx = "([a-zA-Z0-9]{80,})";
$text = preg_replace_callback("$tangoregx","gyou",$text);
function gyou($url){
 for($m = 0;$m < count($url);$m++){
   $tempurl = $url[$m];
   $nkosuu = (int) $nkosuu = strlen($tempurl) / 80;
   for($n = 1;$n < ($nkosuu+1);$n++){
     $tempurl = wordwrap($tempurl,(80 * $n),"<br />",1);
   }
   return $tempurl;
  }
}

それとかなり前の方の人への遅レスだが、Perlでforとwhileの違いなかった・・・
計った時にファイルを読み書きさせたところで差が出た模様。
紛らわしくてすまん。あひゃん♪