Estoy obteniendo $row['message']
de una base de datos MySQL y necesito eliminar todos los espacios en blanco como, \n
\t
etc.
$row['message'] = "This is a Text \n and so on \t Text text.";
debe formatearse para:
$row['message'] = 'This is a Text and so on Text text.';
Lo intenté:
$ro = preg_replace('/\s\s+/', ' ',$row['message']);
echo $ro;
pero no elimina \n
o \t
, solo espacios individuales. ¿Puede alguien decirme cómo hacer eso?
php
regex
string
preg-replace
whitespace
creativz
fuente
fuente
Respuestas:
Necesitas:
Está utilizando lo
\s\s+
que significa espacio en blanco (espacio, tabulación o nueva línea) seguido de uno o más espacios en blanco. Lo que efectivamente significa reemplazar dos o más espacios en blanco con un solo espacio.Lo que desea es reemplazar uno o más espacios en blanco con un solo espacio en blanco, para que pueda usar el patrón
\s\s*
o\s+
(recomendado)fuente
\s
no incluye "pestaña vertical"chr(11)
. Para incluirlo también debe usar laspace
clase de caracteres:[[:space:]]+
php.net/manual/en/regexp.reference.character-classes.phpEsto salidas
fuente
\s
ya contiene pestañas y nuevas líneas, por lo que esta expresión regular anterior parece ser suficiente.fuente
/m
no tendrá un efecto ya que no existen^
o$
anclas y el/u
no tendrá ningún efecto, salvo para retardar ligeramente hacia abajo y morir si la cadena de entrada no es válida UTF-8 (que no afecta a lo que\s
coincide, pero que afectaría\pZ
)simplificado a una función:
basado en la respuesta de Danuel O'Neal.
fuente
fuente
No puedo replicar el problema aquí:
No estoy seguro de si fue solo un error de transcripción o no, pero en su ejemplo, está utilizando una cadena entre comillas simples.
\n
y\t
solo se tratan como nueva línea y pestaña si tiene una cadena entre comillas dobles. Es decir:Editar : como señaló Codaddict,
\s\s+
no reemplazará un solo carácter de pestaña. Sin embargo, todavía no creo que usar\s+
sea una solución eficiente, así que, ¿qué tal esto en su lugar?fuente
Esto reemplaza todas las pestañas, todas las líneas nuevas y todas las combinaciones de múltiples espacios, pestañas y líneas nuevas con un solo espacio.
fuente
fuente
Sin preg_replace ()
fuente
Yo uso este código y patrón:
Puede probar esto en http://writecodeonline.com/php/
fuente
SELECT search_able, REGEXP_REPLACE (search_able,"\\s+",' ') FROM book where id =260
así que muchas graciasTodo lo que necesitas es ejecutarlo de la siguiente manera:
fuente
Esto es lo que usaría:
a. Asegúrese de usar comillas dobles, por ejemplo:
si. Para eliminar espacios en blanco adicionales, use:
Puede que no sea la solución más rápida, pero creo que requerirá el menor código y debería funcionar. Sin embargo, nunca he usado mysql, así que puedo estar equivocado.
fuente
En verdad, si crees que quieres algo como esto:
fuente
esto reemplazará varias pestañas con una sola pestaña
fuente
Sin preg_replace, con la ayuda de loop.
fuente