Que estas comparando cadenas y no numeros
Código PHP:
// Obtenemos la hora
list($hora, $ampm) = explode('-', date('g-a', time()));
if($ampm == 'am' && $hora > 11) // Las de de la noche pasa a ser cero
$hora = 0;
else if($ampm == 'pm' && $hora < 12) // Aseguramos comparar en base a 24 horas
$hora += 12;
if($hora < 12)
echo 'buenos dias';
else if($hora < 19)
echo 'buenas tardes';
else
echo 'buenas noches';