phpでutf-8として不正な文字コードを削除したい

utf-8としておかしい文字が途中で含まれると困ることがあります。

その部分を削除するにはどうすればいいのか考えて、以下のコードを実行してみたところ、おかしい文字が削除されました。

$temp = mb_convert_encoding($temp, 'utf-8', 'utf-8');

問題なのは、これは仕様なのかということです。ぐぐって、以下のサイトを見つけました。


You can clean up invalid UTF-8 sequences (100% guaranteed validity requires some extra filtering though) in user input using:
$str = mb_convert_encoding($str, 'UTF-8', 'UTF-8');
完璧ではないということでしょうか。
他の解決方法を探してみてよく見た手法は以下のコードです。

$str = iconv('UTF-8', 'UTF-8//IGNORE', $str);

はたしてこれで大丈夫なのでしょうか。