>>18
mb_ereg* は ereg* のラッパーじゃなく鬼車を使ってるみたいだが
なんのせいで挙動が違うのかはわかんね
詳しい人に任せるわ

preg_replace() についてはマニュアル通りの結果
http://www.php.net/manual/ja/reference.pcre.pattern.modifiers.php
> デフォルトで、PCRE は、検索対象文字列を単一の行からなるとして処理します。
> (中略)「行末」メタ文字 ($) は、文字列の最後、
> または (D 修飾子が設定されていない場合) 最後にある
> 改行記号の前のみにしかマッチしません。

で、質問の答えにはならないが
UTF-8縛りで困らないなら preg_replace() に乗り換えとけ
互換元の ereg_replace() はPHP6でPECLへ島流しだしな