una todos texto saltos quitar parte ltrim los linea espacios eliminar dobles caracteres cadena blanco array php regex string preg-replace whitespace

php - todos - Eliminar múltiples espacios en blanco



quitar espacios en texto php (15)

En verdad, si piensas que quieres algo como esto:

preg_replace(''//n+|/t+|/s+/'','' '',$string);

Obtendré $row[''message''] desde una base de datos MySQL y necesito eliminar todos los espacios en blanco como /n /t y así sucesivamente.

$row[''message''] = "This is a Text /n and so on /t Text text.";

debe estar formateado 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?


Esto es lo que usaría:

a. Asegúrese de usar comillas dobles, por ejemplo:

$row[''message''] = "This is a Text /n and so on /t Text text.";

segundo. Para eliminar espacios en blanco adicionales, use:

$ro = preg_replace(''//s+/'', '' '', $row[''message'']); echo $ro;

Puede que no sea la solución más rápida, pero creo que requerirá el menor código, y debería funcionar. Aunque nunca he usado mysql, entonces puedo estar equivocado.


Necesitas:

$ro = preg_replace(''//s+/'', '' '',$row[''message'']);

Está utilizando /s/s+ que significa espacios en blanco (espacio, tabulación o nueva línea) seguidos por 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 quiere 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)


No puedo replicar el problema aquí:

$x = "this /n /t/t /n works."; var_dump(preg_replace(''//s/s+/'', '' '', $x)); // string(11) "this works."

No estoy seguro si fue solo un error de transcripción o no, pero en su ejemplo, está usando una cadena de una sola cita. /n y /t solo se tratan como nueva línea y tabulación si tiene una cadena con comillas dobles. Es decir:

''/n/t'' != "/n/t"

Editar : como señaló Codaddict, /s/s+ no reemplazará un solo carácter de tabulación. Todavía no creo que el uso de /s+ sea ​​una solución eficiente, ¿qué tal esto?

preg_replace(''/(?:/s/s+|/n|/t)/'', '' '', $x);


Sin preg_replace ()

$str = "This is a Text /n and so on /t Text text."; $str = str_replace(["/r", "/n", "/t"], " ", $str); while (strpos($str, " ") !== false) { $str = str_replace(" ", " ", $str); } echo $str;


Sin preg_replace, con la ayuda de loop.

<?php $str = "This is a Text /n and so on /t Text text."; $str_length = strlen($str); $str_arr = str_split($str); for ($i = 0; $i < $str_length; $i++) { if (isset($str_arr[$i + 1]) && $str_arr[$i] == '' '' && $str_arr[$i] == $str_arr[$i + 1]) { unset($str_arr[$i]); } else { continue; } } echo implode("", $str_arr) ; ?>


Todo lo que necesita es ejecutarlo de la siguiente manera:

echo preg_replace(''//s{2,}/'', '' '', "This is a Text /n and so on /t Text text."); // This is a Text and so on Text text.


Yo uso este código y patrón:

preg_replace(''///s+/'', '' '',$data) $data = ''This is a Text and so on Text text on multiple lines and with whitespaces''; $data= preg_replace(''///s+/'', '' '',$data); echo $data;

Puede probar esto en http://writecodeonline.com/php/


esto reemplazará múltiples pestañas con una sola pestaña

preg_replace("//s{2,}/", "/t", $string);


simplificado a una función:

function removeWhiteSpace($text) { $text = preg_replace(''/[/t/n/r/0/x0B]/'', '''', $text); $text = preg_replace(''/([/s])/1+/'', '' '', $text); $text = trim($text); return $text; }

basado en la respuesta de Danuel O''Neal.


$str=''This is a Text /n and so on Text text.''; print preg_replace("/[[:blank:]]+/"," ",$str);


<?php #This should help some newbies # REGEX NOTES FROM DANUEL # I wrote these functions for my own php framework # Feel Free to make it better # If it gets more complicated than this. You need to do more software engineering/logic. # (.) // capture any character # /1 // if it is followed by itself # + // one or more class whitespace{ static function remove_doublewhitespace($s = null){ return $ret = preg_replace(''/([/s])/1+/'', '' '', $s); } static function remove_whitespace($s = null){ return $ret = preg_replace(''/[/s]+/'', '''', $s ); } static function remove_whitespace_feed( $s = null){ return $ret = preg_replace(''/[/t/n/r/0/x0B]/'', '''', $s); } static function smart_clean($s = null){ return $ret = trim( self::remove_doublewhitespace( self::remove_whitespace_feed($s) ) ); } } $string = " Hey yo, what''s /t/n/tthe sc/r/nen/n/tario! /n"; echo whitespace::smart_clean($string);


<?php $str = "This is a string with spaces, tabs and newlines present"; $stripped = preg_replace(array(''//s{2,}/'', ''/[/t/n]/''), '' '', $str); echo $str; echo "/n---/n"; echo "$stripped"; ?>

Estas salidas

This is a string with spaces, tabs and newlines present --- This is a string with spaces, tabs and newlines present


preg_replace(''/(/s/s+|/t|/n)/'', '' '', $row[''message'']);

Esto reemplaza todas las pestañas, todas las líneas nuevas y todas las combinaciones de espacios múltiples, pestañas y líneas nuevas con un solo espacio.


preg_replace(''/[/s]+/mu'', '' '', $var);

/s ya contiene pestañas y líneas nuevas, por lo que esta expresión regular anterior parece ser suficiente.