Если честно, я бы сказал проще и предупредил бы пользователя, если он ввел неверную строку:
$type = $_GET['type'];
if (!preg_match('/^[a-z]{0,3}$/', $type)) {
// Handle error properly here.
die('Type argument must be a string of 0-3 lower case letters (a-z)');
}
Если вы действительно хотите исправить ввод, тогда ваше оригинальное решение было в порядке, его можно просто немного почистить:
$type = substr(preg_replace('/[^a-z]+/', '', strtolower($_GET['type'])), 0, 3);