[\xf3-\xf7][\x40-\xfc]は絵文字の文字コードってことで良いかな。
sjisの漢字の範囲は[\x81-\x9F\xE0-\xEF][\x40-\x7E\x80-\xFC]じゃない?

てなわけで、とりあえずこれ。
/($sjis)([\xf3-\xf7][\x40-\xfc])/e

でも、これでは絵文字が連続した場合は変換できない。

やはり、どこが1バイト目か2バイト目か分かるように、
あらかじめ明確に文字を区切らなきゃいけないっぽい。

$text = preg_replace("/($sjis)/", "$1 ", $text);
$text = preg_replace("/([\xf3-\xf7][\x40-\xfc])\s/e", "'['.bin2hex(\\1).'] '", $text);

こんな感じにすれば確実。もっといい方法あれば良いんだけど。
PHPはやったことないので、細かい間違いはご容赦・・・。