Бездарно, г-н ThunderCat!
А почему вы сами не проверяете код, когда даете ответ?! (риторический вопрос).
В вашем коде две ошибки.
1. На этапе проверки количества строк. В вашем примере он при любом раскладе выводит False (для текстового файла).
2. На этапе вывода. Так текстовые строки не выводятся!
Правильное решение (без проверки количества):
$arr = file('semantic.txt');
shuffle($arr);
$res = array_slice($arr, 0, 150);
foreach($res as $str){
echo htmlspecialchars($str) . "<br />\n";
}