すみません、書き直します。

$test = 'あん'; //機種依存のsjis文字入り(同じ文字はありません)
$test =~ s/\G((?:[\x80-\x9F\xE0-\xF7\xFA-\xFC][\x40-\x7E\x80-\xFC]|[\x00-\x7F]|[\xA1-\xDF])*)([\xF8\xF9][\x40-\x7E\x80-\xFC

])/$1/eog;

これはPerlスクリプトなんですが、これをPHPに移行したいと思います。

eogを除いてpreg_replaceすると>>370のように何故か5c30になってしまいます。

$test1 = mb_ereg_replace("([\xF8\xF9][\x40-\x7E\x80-\xFC])","\\1" , $test);
これはWarning mbregex compile err: mismatch multibyte code length in char-class range in  となってしまいます

どこがおかしいのですか??