Una vez más os traigo problemas y soluciones que nos encontramos todos los días en PHP.
Esta vez se trata de quitar o eliminar los saltos de linea, tabulaciones, retornos de carro, tabulación vertical (poco usada) y carácter nulo.
Sobre todo lo que más nos encontraremos cuando modifiquemos cadenas (strings) serán tabulaciones y saltos de linea.
Buenos os voy a enseñar dos métodos para poder hacer esto.
El primero sería usando la función trim() y segundo sería usando el reemplazo de caracteres en la cadena mediante una expresión regular con la función eregi_replace().
- trim() - es la función por excelencia para eliminar los espacios en blanco sobrantes por delante y por detrás en una cadena. Lo que no todo el mundo sabe es que esta función también elimina los satos de linea "\n", tabulaciones "\t", retornos de carro "\r", byte NUL "\0" y la tabulación vertical "\x0B". Más información.
ejemplo de uso de trim():
$cadena = " esto es una cadena que contiene\n un salto de linea"; trim($cadena); // El resultado de de trim en este ejemplo es // "esto es una cadena que contiene un salto de linea". // Se ha eliminado el espacio delantero y el sato de linea. |
- eregi_replace() - es la función más usada cuando queremos usar expresiones regulares ignorando mayúsculas y minúsculas aunque su uso esta totalmente desaconsejado desde la versión 5.3.0 de PHP, aun así os voy a explicar como usarla. Más información.
ejemplo con eregi_replace():
$cadena = "esto es un salto de linea\n con una tabulación\t"; eregi_replace("[\n|\r|\n\r|\t|\0|\x0B]", "",$cadena); |
Esta función dará como resultado la cadena con todos los caracteres limpiados.
¿Que función elegir en cada momento?, yo para un uso sencillo de eliminación uso trim() pero cuando necesito hacer algo más complicado como sustitución utilizo eregi_replace().
Espero que os sirva.
Estimado: Trim no me elimino los saltos de linea entre medio del texto solo los del final
Gracias me sirvio de mucho
Muy Buen Post
Mejor utilizar mberegi_replace(«[\n|\r|\n\r|\t||\x0B]», «»,$string); ya que eregi_replace() no se utiliza en versiones mas nuevas de PHP
eregi_replace() para 5.3>… malamente