preg/mb_ereg 系関数は NULL を返すことがあります。
特に preg_replace/preg_replace_callback が深刻で
$string = preg_replace($pattern, $replacement, $string);
の場合、$string が置換後の文字列ではなく NULL に置き換わっているかもしれません。
NULL は "" にキャストされるため「なぜか表示されない」という挙動になります。
例:
また、/u 修飾子を使う場合、$string に不正な UTF-8 シーケンスが含まれている場合は NULL を返すそうです。
qiita.com/HikaruYokogoshi/items/6f96bc209d59ae44c802#comment-777764249f93a3a94b04
すべての箇所で NULL チェックをするのは難しいので、htmlsc() に相当する関数を作ったほうがよいと思うのですがどうでしょうか?