>>834
$string = "【PHP】下らねぇ質問はID出して書き込みやがれ 90";
$length = mb_strlen($string,"UTF-8");
$return = "";
for($i = 0; $i < $length; $i++){
  $now = mb_substr($string,$i,1,"UTF-8");
  if(preg_match("/[\0-\ff]|[ -滌]|[漾-K]/",bin2hex($now)) == 1) {
    $return .= $now;
  }else{
    $return .= "&#".hexdec(bin2hex(mb_convert_encoding($now,"Unicode","UTF-8"))).";";
  }
}

正規表現で纏めると楽。

動かしてないからバグ含むかもしれないが