$string = "
put returns between paragraphs
for linebreak add 2 spaces at end
";
Voulez-vous supprimer toutes les nouvelles lignes de la chaîne.
J'ai cette expression régulière, elle peut toutes les intercepter, 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 ";
Vous devez faire attention aux doubles sauts de ligne, ce qui provoquerait des doubles espaces. Utilisez cette expression régulière vraiment efficace:
$string = trim(preg_replace('/\s\s+/', ' ', $string));
Plusieurs espaces et nouvelles lignes sont remplacés par un seul espace.
Edit: Comme d'autres l'ont déjà souligné, cette solution pose des problèmes de correspondance de 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 à effectuer les opérations suivantes:
$string = trim(preg_replace('/\s+/', ' ', $string));
Quelques commentaires sur la réponse acceptée:
Le +
signifie "1 ou plus". Je ne pense pas que vous ayez besoin de répéter \s
. Je pense que vous pouvez simplement écrire '/\s+/'
.
De même, si vous souhaitez supprimer les espaces en premier et dernier de la chaîne, ajoutez trim
.
Avec ces modifications, le code serait:
$string = preg_replace('/\s+/', ' ', trim($string));
Il suffit d'utiliser preg_replace()
$string = preg_replace('~[\r\n]+~', '', $string);
Vous pourriez vous en sortir avec str_replace()
sur celui-ci, bien que le code ne soit pas aussi net:
$string = str_replace(array("\n", "\r"), '', $string);
Voir en direct sur ideone
$string = str_replace(array("\n", "\r"), ' ', $string);
Vous devriez utiliser str_replace pour sa vitesse et utiliser des guillemets doubles avec un tableau
str_replace(array("\r\n","\r"),"",$string);
Les remplacements de regex PCRE peuvent être effectués à l'aide de preg_replace: http://php.net/manual/fr/function.preg-replace.php
$new_string = preg_replace("/\r\n|\r|\n/", ' ', $old_string);
Remplacerait une nouvelle ligne ou renverrait des caractères avec un espace Si vous ne voulez rien remplacer pour les remplacer, changez le 2ème argument en ''
.
Utilisez ceci:
remplace la série de nouvelles lignes par une chaîne vide:
$string = preg_replace("/[\\n\\r]+/", "", $string);
ou vous voulez probablement remplacer les nouvelles lignes par un seul espace:
$string = preg_replace("/[\\n\\r]+/", " ", $string);
La séquence d'échappement \R
correspond à une nouvelle ligne générique
c'est-à-dire que tout ce qui est considéré comme une séquence de linebreak par Unicode. Cela inclut tous les caractères correspondant à
\v
(espaces blancs verticaux), ainsi que la séquence de plusieurs caractères\x0D\x0A
...
$string = preg_replace('/\R+/', " ", $string);
En mode 8 bits non-UTF-8, le code
\R
équivaut à ce qui suit:(?>\r\n|\n|\x0b|\f|\r|\x85)
... pcre.org
peut-être que cela fonctionne:
$str='\n';
echo str_replace('\n','',$str);
Je ne suis pas sûr que cela ait une valeur par rapport aux réponses déjà soumises, mais je peux tout aussi bien le poster.
// Create an array with the values you want to replace
$searches = array("\r", "\n", "\r\n");
// Replace the line breaks with a space
str_replace($searches, "", $string);
// Replace multiple spaces with one
$output = preg_replace('!\s+!', ' ', $string);
De quoi s'agit-il:
$string = trim( str_replace( PHP_EOL, ' ', $string ) );
Cela devrait être une solution assez robuste car\n ne fonctionne pas correctement sur tous les systèmes si je ne me trompe pas ...
Vous pouvez essayer ci-dessous, le code préservera les espaces et les nouvelles lignes de votre texte.
$str = "
put returns between paragraphs
for linebreak add 2 spaces at end
";
echo preg_replace( "/\r|\n/", "", $str );
Celui-ci supprime également les onglets
$string = preg_replace('~[\r\n\t]+~', '', $text);
Les sauts de ligne dans le texte sont généralement représentés par:
\r\n - sur un ordinateur Windows
\r - sur un ordinateur Apple
\n - sur Linux
//Removes all 3 types of line breaks
$string = str_replace("\r", "", $string);
$string = str_replace("\n", "", $string);
c'est le motif que j'utiliserais
$string = preg_replace('@[\s]{2,}@',' ',$string);
ce code ci-dessous fonctionne tout le texte s'il vous plaît utilisez le:
$des = str_replace('\n',' ',$des);
$des = str_replace('\r',' ',$des);
Beaucoup de ces solutions n'ont pas fonctionné pour moi. Cela a cependant fait l'affaire: -
$svgxml = preg_replace("/(*BSR_ANYCRLF)\R/",'',$svgxml);
Voici la référence: - PCRE et New Lines
J'ai été surpris de voir à quel point tout le monde sait à propos de regex.
Strip newlines en php est
$str = preg_replace('/\r?\n$/', ' ', $str);
En Perl
$str =~ s/\r?\n$/ /g;
Signification: remplacez tout caractère de nouvelle ligne à la fin de la ligne (pour des raisons d'efficacité) - éventuellement précédé d'un retour chariot - par un espace.
\ n ou\015 est une nouvelle ligne .\r ou\012 est un retour chariot .? dans regex signifie match 1 ou zéro du caractère précédent . $ dans regex signifie match en fin de ligne.
Perldoc perlre est la référence de regex la plus originale. Tous les développeurs devraient bien connaître ce document: http://perldoc.Perl.org/perlre.html Notez que toutes les fonctionnalités ne sont pas prises en charge par tous. langues.
Vous pouvez supprimer une nouvelle ligne et plusieurs espaces blancs.
$pattern = '~[\r\n\s?]+~';
$name="test1 /
test1";
$name = preg_replace( $pattern, "$1 $2",$name);
echo $name;