323 votes

Supprimer les nouvelles lignes de chaîne

<pre><code></code><p>Vous souhaitez supprimer toutes les nouvelles lignes de chaîne.</p><p>J’ai cette regex, il peut attraper chacun d’eux, le problème est que je ne sais pas avec quelle fonction dois-je utiliser il.</p><pre><code></code></pre><p><code></code>devienne :</p><pre><code></code></pre></pre>

633voto

elusive Points 14184

Vous devez être prudent de double sauts de ligne, ce qui entraînerait des espaces de double. Utilisez ce vraiment efficace expression régulière:

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

De multiples espaces et retours à la ligne sont remplacés par un seul espace.

Edit: Comme d'autres l'ont souligné, cette solution a des problèmes d'appariement unique retours à la ligne entre les mots. Ce n'est pas présente dans l'exemple, mais on peut facilement voir comment cette situation pourrait se produire. Une alternative est de faire ce qui suit:

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

192voto

matsolof Points 942

Quelques remarques sur la réponse acceptée :

Le signifie « 1 ou plus ». Je ne pense pas que vous devez répéter . Je pense que vous pouvez simplement écrire `` .

En outre, si vous voulez supprimer les espaces blancs premier et le dernier dans la chaîne, ajouter `` .

Avec ces modifications, le code serait :

98voto

NullUserException Points 42268

Il suffit d’utiliser``

Vous pourriez sortir avec `` sur celui-ci, bien que le code ne semble pas comme nettoyer :

Voir en direct sur ideone

23voto

fabrik Points 7073
$string = str_replace(array("\n", "\r"), ' ', $string);

15voto

RobertPitt Points 28140

Vous devez utiliser str_replace pour sa rapidité et à l’aide de guillemets doubles avec un tableau

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