php の問題ではないので最新版に変えても
同じ結果になると思います。

Shift_JISを受け付けるならば、ereg_rep() に渡す直前に
$sub[3] = mb_convert_encoding ( $sub[3] , "EUC-JP" , "SJIS" ) ;
とやって文字コードを変換するか、
mb_ereg_match() を使えばお茶を濁せるかもしれません。