42 votes

Remplacer les espaces et les sauts de ligne en excès par PHP ?

$string = "My    text       has so    much   whitespace    




Plenty of    spaces  and            tabs";

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

J'ai lu la documentation de PHP et suis le tutoriel de preg_replace, cependant ce code produit

Mon texte a tellement d'espaces Beaucoup d'espaces et de tabulations

Comment puis-je le transformer en :

Mon texte a tellement d'espaces blancs Beaucoup d'espaces et d'onglets

13voto

Harikrishnan Hr Points 109

Edité la bonne réponse. À partir de PHP 5.2.4 environ, le code suivant fera l'affaire :

 echo preg_replace('/\v(?:[\v\h]+)/', '', $string);

6voto

Sourav Points 4119

Remplacer plusieurs sauts de ligne, tabulation, espace

 $text = preg_replace("/[\r\n]+/", "\n", $text);
$text = preg_replace("/\s+/", ' ', $text);

Testé :)

6voto

Hoàng Vũ Tgtt Points 71
//Newline and tab space to single space

$from_mysql = str_replace(array("\r\n", "\r", "\n", "\t"), ' ', $from_mysql);


// Multiple spaces to single space ( using regular expression)

$from_mysql = ereg_replace(" {2,}", ' ',$from_mysql);

// Replaces 2 or more spaces with a single space, {2,} indicates that you are looking for 2 or more than 2 spaces in a string.

3voto

syedrakib Points 1197

cela réduirait COMPLÈTEMENT la chaîne entière (comme un grand article de blog) tout en préservant toutes les balises HTML en place.

 $email_body = str_replace(PHP_EOL, ' ', $email_body);
    //PHP_EOL = PHP_End_Of_Line - would remove new lines too
$email_body = preg_replace('/[\r\n]+/', "\n", $email_body);
$email_body = preg_replace('/[ \t]+/', ' ', $email_body);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X