2012-03-03 16 views

Respuesta

5

Las funciones de ereg_ * (POSIX) han quedado obsoletas desde hace mucho tiempo. No deberías continuar usando estos métodos.

Según POSIX Bracket Expressions[:cntrl:] resuelve el rango ASCII [\x00-\x1F\x7F] (o el Unicode \p{Cc}) y [:space:] resuelve [ \t\r\n\v\f]. Utilizando asciitable.com para resolver esos caracteres, se queda con una lista de exclusión de [\x20\x09-\x0D]. "Haciendo los cálculos" le quedan [\x00-\x08\x0E-\x1F\x7F]. y que te deja con la siguiente, PHP 5.3 y compatible hacia arriba, sanitización:

$message = preg_replace('/[\x00-\x08\x0E-\x1F\x7F]+/', '', $message); 

Tenga en cuenta que VT (Tab vertical) y FF (Avanza, Nueva página) también se conservan. Dependiendo de su situación es posible que desee quitar éstos, también:

$message = preg_replace('/[\x00-\x08\x0E-\x1F\x7F\x0A\x0C]+/', '', $message); 
0

[[:cntrl:]] es básicamente [\x00-\x1f\x7F] y [[:space:]] es equivalente a [ \t\r\n\v\f](ref), por lo que el método a largo mano sería utilizar [\x00-\x08\x0E-\x1F\7F] (el espacio es 0x20 y fuera de la gama CNTRL, \t\r\n\v\f son \ x09 a \ x0D)

Cuestiones relacionadas