2015-09-03 1 views
2

Je parviens à supprimer les espaces mais je ne comprends pas pourquoi cela supprimerait aussi mes retours. J'ai un textarea dans ma forme et je veux permettre jusqu'à deux retours maximum. Voici ce que j'ai utilisé jusqu'à présent.Supprimer plus de deux retours et plus d'un espace dans la chaîne php

$string = preg_replace('/\s\s+/', ' ', $string); // supposed to remove more than one consecutive space - but also deletes my returns ... 
$string = preg_replace('/\n\n\n+/', '\n\n', $string); // using this one by itself does not do as expected and removes all returns ... 

Il semble que la première ligne se débarrasse déjà de plus d'un espace ET tout retourne ... Ce qui est étrange. Pas sûr que je le fais bien ...

+1

utilisation \ h au lieu pour les espaces blancs horizontaux – Tal

+0

Merci. Que diriez-vous de mes voitures de retour? ... Il supprime encore tous les retours en utilisant la deuxième preg_replace – gotye

+0

vous devez joindre votre chaîne de remplacement entre guillemets. –

Répondre

0

Pour ceux d'entre vous qui en auront besoin, c'est ainsi que vous supprimez deux retours chariot d'une zone de texte.

preg_replace('/\n\r(\n\r)+/', "\n\r", $str); 

Pour la question de l'espace, comme il a été affiché ci-dessus, remplacez \ s par \ h

+0

Vous voulez dire "c'est comme ça que vous supprimez deux ou plusieurs retours de chariot d'une zone de texte." droite? (Merci, BTW, c'est exactement ce dont j'avais besoin!) – Phil

1

Parce que \s correspondra également aux caractères de nouvelle ligne. Donc, je vous suggère d'utiliser \h pour faire correspondre n'importe quel type d'espaces horizontaux.

$string = preg_replace('/\h\h+/', ' ', $string); 
1
\s match any white space character [\r\n\t\f ] 

Voir la deifinition de \s Il comprend un \n .Utilisation

\h matches any horizontal whitespace character (equal to [[:blank:]]) 
1

Utilisez \h pour espaces blancs horizontaux.