Eliminación de caracteres de control de cadenas PHP
P: Modificación de expresiones regulares para eliminar caracteres de control
Un desarrollador de PHP empleó anteriormente la siguiente expresión para purgar caracteres de control como STX de un string:
preg_replace("/[^a-zA-Z0-9 .\-_;!:?äÄöÖüÜß<>='\"]/","",$pString)
Sin embargo, el resultado fue demasiado restrictivo, lo que generó la pregunta: ¿cómo se pueden eliminar selectivamente los caracteres de control?
R: Utilización de clases de caracteres específicas para la identificación de caracteres de control
Para apuntar con precisión a los caracteres de control, se puede utilizar una clase de caracteres más específica:
preg_replace('/[\x00-\x1F\x7F]/', '', $input);
Esta expresión coincide con caracteres con códigos ASCII dentro del rango \x00-\x1F y \x7F, que abarca los primeros 32 caracteres y \x7F, que incluye caracteres como retornos de carro.
Conservar caracteres esenciales como saltos de línea
Si se trata de caracteres específicos, como saltos de línea o carro retornos, necesitan ser preservados, sus secuencias de escape pueden ser excluido:
preg_replace('/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F]/', '', $input);
En esta expresión modificada , \x0A (avance de línea) y \x0D (retorno de carro) están excluidos de la clase de caracteres.
Moderno Sintaxis y obsolescencia
Es fundamental tener en cuenta que la obsolescencia de ereg_replace en PHP 5.3.0 y su posterior eliminación en PHP 7.0.0 exigen el uso de preg_replace sobre ereg_replace.
Finalmente, una clase de personaje para personajes de control
Para una alternativa concisa y portátil, la clase de personaje [:cntrl:] se puede emplear:
preg_replace('/[[:cntrl:]]/', '', $input);
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3