$string = "
put returns between paragraphs
for linebreak add 2 spaces at end
";
Vous souhaitez supprimer toutes les nouvelles lignes de la chaîne.
J'ai ce regex, il peut tous les attraper, le problème est que je ne sais pas avec quelle fonction dois-je l'utiliser.
/\r\n|\r|\n/
$string
devrait devenir:
$string = "put returns between paragraphs for linebreak add 2 spaces at end ";
preg_replace
. C'est presque deux fois plus lent questr_replace
.s($str)->normalizeLineEndings('')
utile, comme dans cette bibliothèque autonome . Il supprimera non seulement LF, CR et CRLF, mais également toute nouvelle ligne Unicode.Réponses:
Vous devez être prudent avec les doubles sauts de ligne, ce qui provoquerait des doubles espaces. Utilisez cette expression régulière vraiment efficace:
Plusieurs espaces et sauts de ligne sont remplacés par un seul espace.
Edit: Comme d'autres l'ont souligné, cette solution a des problèmes pour faire correspondre les nouvelles lignes entre les mots. Ce n'est pas présent dans l'exemple, mais on peut facilement voir comment cette situation pourrait se produire. Une alternative consiste à procéder comme suit:
la source
/(?![ ])\s+/
Quelques commentaires sur la réponse acceptée:
Le
+
moyen "1 ou plus". Je ne pense pas que vous ayez besoin de répéter\s
. Je pense que vous pouvez simplement écrire'/\s+/'
.En outre, si vous souhaitez supprimer les espaces en premier et en dernier de la chaîne, ajoutez
trim
.Avec ces modifications, le code serait:
la source
/\s\s+/
ne correspondrait pas au saut de lignefoo\nbar
.Utilisez simplement
preg_replace()
Vous pouvez vous en sortir avec
str_replace()
celui-ci, bien que le code ne semble pas aussi propre:Voir en direct sur ideone
la source
$string = preg_replace("~[\r\n]~", "",$string);
la source
\r
caractèresVous devez utiliser str_replace pour sa vitesse et utiliser des guillemets doubles avec un tableau
la source
\n
et pas\r\n
plus, je pense que l'OP demande de mettre un seul espace à la place des nouvelles lignesJe ne sais pas si cela a une valeur par rapport aux réponses déjà soumises, mais je peux tout aussi bien le poster.
la source
Les remplacements de regex PCRE peuvent être effectués à l'aide de preg_replace: http://php.net/manual/en/function.preg-replace.php
Remplacerait une nouvelle ligne ou retournerait des caractères par un espace. Si vous ne voulez rien pour les remplacer, remplacez le 2e argument par
''
.la source
preg
fonctions utilisent des expressions régulières PCRE et non POSIX. Il existe desereg
fonctions qui utilisent POSIX, mais elles sont désormais obsolètes.Utilisez ceci:
remplacer la série de sauts de ligne par une chaîne vide:
ou vous voulez probablement remplacer les sauts de ligne par un seul espace:
la source
\\n
semble terrible.\\\\
correspondre à une seule barre oblique inverse est tout simplement horrible.La séquence d'échappement
\R
correspond à une nouvelle ligne génériqueRegex101 Demo
la source
Les sauts de ligne dans le texte sont généralement représentés comme suit:
\ r \ n - sur un ordinateur Windows
\ r - sur un ordinateur Apple
\ n - sous Linux
la source
De quoi s'agit-il:
Cela devrait être une solution assez robuste car \ n ne fonctionne pas correctement dans tous les systèmes si je ne me trompe pas ...
la source
J'ai été surpris de voir à quel point tout le monde en sait peu sur les regex.
Strip newlines en php est
En perl
Signification remplacer tout caractère de nouvelle ligne à la fin de la ligne (pour plus d'efficacité) - éventuellement précédé d'un retour chariot - par un espace.
\ n ou \ 015 est une nouvelle ligne. \ r ou \ 012 est le retour chariot. ? en expression régulière signifie correspondre à 1 ou zéro du caractère précédent. $ en regex signifie correspondre à la fin de la ligne.
La référence originale et la meilleure regex est perldoc perlre, chaque codeur devrait bien connaître ce document: http://perldoc.perl.org/perlre.html Notez que toutes les fonctionnalités ne sont pas prises en charge par toutes les langues.
la source
c'est le modèle que j'utiliserais
la source
peut-être que cela fonctionne:
la source
Celui-ci supprime également les onglets
la source
Vous pouvez essayer ci-dessous le code conservera tous les espaces blancs et les nouvelles lignes dans votre texte.
la source
Beaucoup de ces solutions n'ont pas fonctionné pour moi. Cela a cependant fait l'affaire: -
Voici la référence: - PCRE et New Lines
la source
ce code ci-dessous fonctionne tout le texte, veuillez l'utiliser:
la source
Vous pouvez supprimer une nouvelle ligne et plusieurs espaces blancs.
la source