Hay algún tipo de problema al usar una función como la siguiente. Me refiero a las ExpReg.
$sExpReg = '';
if( $sType == "CHAR" ){ $sExpReg = "/^[a-z]+$/i"; } # CHAR = String
elseif( $sType == "NUM" ){ $sExpReg = "/^[[:digit:]]+$/"; } # NUM = Numbers
elseif( $sType == "ALL" ){ $sExpReg = "/^[[:alnum:]]+$/"; } # ALL = String and Numbers
else{ return 0; }
if( @preg_match( $sExpReg, $sString ) ){ return $sString; }
}
Yo no veo ningún problema, la probé y todo anda bien.
Pd: Te recomiendo que no utilices patrones de Posix aunque son compatible con Perl.
la string no incluye caracteres especiales ni espacios... por que no usas las funciones is_string/is_numeric?
Si agregará la ñ, lo tomaría como carácter especial?
Pasa que la ñ no es parte del alfabeto según el locale que tienes establecido.