2009-11-09 21 views
99

Recibo una cadena de una consulta de base de datos, luego elimino todas las etiquetas HTML, retornos de carro y líneas nuevas antes de ponerlo en un archivo CSV. Lo único es que no puedo encontrar una manera de eliminar exceso de espacio en blanco de entre las cadenas.Eliminar exceso de espacio en blanco de una cadena

¿Cuál sería la mejor manera de eliminar los caracteres de espacios en blanco internos?

+4

Por favor, publique un muestra de cuerda original y cadena deseada. – Zote

+0

¿También puede aclarar cómo debe ser el resultado final? ¿Está insertando las comas en datos para CSV, obteniéndolo de una base de datos con comas que ya están en él, introduciendo cadenas en una función que maneja la inserción de CSV, etc.? –

+0

ok, el out out final debe ser una cadena con cada palabra separada por un solo espacio en blanco, en este momento se trata de un espacio en blanco múltiple. – joepour

Respuesta

228
No

seguro exactamente lo que quiere, pero aquí hay dos situaciones:

  1. Si sólo están tratando con exceso de espacio en blanco en el principio o el final de la cadena se puede utilizar trim(), ltrim() o rtrim() para eliminarlo.

  2. Si se trata de espacios adicionales dentro de una cadena consideran un preg_replace de múltiples espacios en blanco " "* con un solo espacio en blanco " ".

Ejemplo:

$foo = preg_replace('/\s+/', ' ', $foo); 
+52

$ foo = preg_replace ('/ \ s + /', '', $ foo); – genio

+6

este código también eliminará todas las líneas nuevas –

+0

usando '' foo = preg_replace ('/ \ s + /', '', $ foo); 'matará los efectos de' nl2br() ' –

36
$str = str_replace(' ','',$str); 

O, reemplace con subrayado, & nbsp; etc, etc

+4

Esto elimina todos los espacios en blanco. Él solo quiere normalizar la cadena. – Svend

+10

Lo que estaba buscando (aunque no era la pregunta) – Sevenearths

+0

Yo también estaba buscando esta solución en particular :) – swl1020

3

$str=preg_replace('/[\s]+/',' ',$str);

+1

Usted ni se molestó en leer otras respuestas, ¿verdad? – TechNyquist

17

$str = trim(preg_replace('/\s+/',' ', $str));

La línea de código anterior se eliminará espacios adicionales, así como espacios iniciales y finales.

0

Para ampliar la respuesta de Sandip, tenía un montón de cadenas apareciendo en los registros que estaban mal codificados en bit.ly. Querían codificar solo la URL pero poner un identificador de Twitter y algunas otras cosas después de un espacio. Parecía que este

? productID =26%20via%[email protected] 

Normalmente, eso no sería una problema, pero estoy recibiendo una gran cantidad de intentos de inyección SQL, así que redirigir cualquier cosa que no es una identificación válida para un 404. Solía el método preg_replace para convertir la cadena inválida de productID en un productID válido.

$productID=preg_replace('/[\s]+.*/','',$productID); 

Busco un espacio en la URL y luego elimino todo después de eso.

12

ninguno de otros ejemplos que funcionó para mí, así que he utilizado éste:

trim(preg_replace('/[\s\t\n\r\s]+/', ' ', $text_to_clean_up)) 

Esto reemplaza todas las pestañas, las nuevas líneas, espacios, etc. dobles a simples 1 plaza.

6

Si desea reemplazar sólo múltiples espacios en una cadena, por ejemplo: "this string have lots of space . " Y esperas que la respuesta sea "this string have lots of space", puede utilizar la siguiente solución:

$strng = "this string      have lots of      space . "; 

$strng = trim(preg_replace('/\s+/',' ', $strng)); 

echo $strng; 
Cuestiones relacionadas