Вам нужно сделать:
echo htmlentities($string);
для отображения строки в браузере. Это связано с тем, что <
в строке интерпретируется браузером как начало тега HTML.
Так что это не PHP, а браузер, который вызывает такое поведение. Если вы сделаете точно такое же отображение в командной строке, вы увидите все символы.