"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo eliminar eficazmente los caracteres de control de las cadenas PHP?

¿Cómo eliminar eficazmente los caracteres de control de las cadenas PHP?

Publicado el 2024-11-12
Navegar:294

How to Effectively Remove Control Characters from PHP Strings?

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);
Último tutorial Más>

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