Estoy obteniendo $row['message']de una base de datos MySQL y necesito eliminar todos los espacios en blanco como, \n \tetc.
$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 \no \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
\sno incluye "pestaña vertical"chr(11). Para incluirlo también debe usar laspaceclase de caracteres:[[:space:]]+php.net/manual/en/regexp.reference.character-classes.phpEsto salidas
fuente
\sya contiene pestañas y nuevas líneas, por lo que esta expresión regular anterior parece ser suficiente.fuente
/mno tendrá un efecto ya que no existen^o$anclas y el/uno 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\scoincide, 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.
\ny\tsolo 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 =260así 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