アシアルともあろうお方が

header('Content-Type: text/html; charset=SJIS');

こんなヘッダーはいちゃいかんのでは.
こんなだから「SJIS」という表記ががいつまでも誤用される.
ちゃんとShift_JISと書いて欲しいところです.

これを防ぐ方法は対象となる文字列の文字コードを同じ文字コードへ変換するこ とです。これにより、有効ではない文字を取り除いて下さい。

$str = mb_convert_encoding($str, 'SJIS', 'SJIS'); // SJISの場合

っでこのコード

これを防ぐ方法は対象となる文字列の文字コードを同じ文字コードへ変換するこ とです。これにより、有効ではない文字を取り除いて下さい。

$str = mb_convert_encoding($str, 'SJIS', 'SJIS'); // SJISの場合

いわゆる機種依存文字はこのコードでは問題になります.
機種依存文字Shift_JISマッピング外なので,期待通りの変換動作がおそらく行われません.
こういった場合,「SJIS-win」と指定する必要があると思います.