2011-04-04 7 views
24

Duplicar posible:
remove multiple whitespaces in php¿Cómo elimino espacios extra, pestañas y líneas de una oración y las sustituyo con un solo espacio?

Tengo un flujo de caracteres, una frase o un párrafo, que puede tener espacios adicionales en dos palabras o incluso pestañas o saltos de línea, ¿cómo puede Elimino todo esto y lo sustituyo por un solo espacio en blanco.

+0

¿Cómo puede esa pregunta saltar los ojos? Gracias Shakti :-) – Kumar

+0

La pregunta no es exactamente la misma que @Shakti ha marcado como duplicado. Sin embargo, tal vez solo sea un malentendido. ¿Qué desea que suceda con una sola * pestaña * o carácter de avance de línea? ¿Deberían ser dejados solos? ¿Deberían las pestañas múltiples convertirse en una sola pestaña, o deberían convertirse en un solo espacio en blanco? ¿Qué pasa con las pestañas mixtas, espacios, líneas nuevas, etc.? –

+0

@Tim Pietzcker, quiero convertir todos los espacios en blanco, las pestañas y los avances de línea en un espacio en blanco, de modo que pueda 'explotar()' la oración usando el espacio en blanco como delimitador. – Kumar

Respuesta

77

se puede utilizar una expresión regular como:

preg_replace("/\s+/", " ", $string); 

Eso debería sustituir todos los múltiples espacios en blanco, pestañas y nuevas líneas con uno solo.

Thanks to @ridgerunner por la sugerencia - que puede significativamente más rápido si se agrega el modificador 'S' estudio:

preg_replace('/\s+/S', " ", $string); 

'S'helps "non-anchored patterns that do not have a single fixed starting character" - i.e. a character class.

+0

¿Y pestañas y alimentaciones de línea? ¿Debo ejecutar mi entrada de texto a través de varias expresiones regulares? – Kumar

+0

@Kumar, no, las pestañas y las alimentaciones de línea están incluidas en '\ s'. –

+0

@Tim Pietzcker Gracias por la adición, me olvidé de mencionar explícitamente las pestañas y las nuevas líneas. – jeroen

Cuestiones relacionadas