Entfernen, neue Zeilen aus string und ersetzen Sie mit einem leeren Raum
$string = "
put returns between paragraphs
for linebreak add 2 spaces at end
";
Entfernen möchten alle neuen Zeilen aus string.
Habe ich diese regex, es können alle von Ihnen fangen, das problem ist ich weiß nicht mit welcher Funktion soll ich es verwenden.
/\r\n|\r|\n/
$string
werden sollte:
$string = "put returns between paragraphs for linebreak add 2 spaces at end ";
- Wenn Sie das tun Tausende von Ersetzungen, vermeiden Sie die Verwendung
preg_replace
. Es ist fast doppelt so langsam wiestr_replace
. - Vielleicht finden Sie
s($str)->normalizeLineEndings('')
hilfreich, wie in diese standalone-Bibliothek. Es entfernt nicht nur LF, CR und CRLF, sondern auch beliebige Unicode-Zeilenumbruch.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie vorsichtig sein, der doppelte Zeilenumbrüche, die dazu führen, dass doppelte Leerzeichen. Verwenden Sie diese wirklich effizient regulären Ausdruck:
Mehrere Leerzeichen und Zeilenumbrüche ersetzt werden durch ein einzelnes Leerzeichen.
Edit: Wie andere haben darauf hingewiesen, diese Lösung hat Probleme passende single Zeilenumbrüche in zwischen den Wörtern. Dies ist nicht vorhanden im Beispiel, aber man kann leicht sehen, wie diese situation könnte auftreten. Eine alternative ist Folgendes zu tun:
/(?![ ])\s+/
Ein paar Kommentare auf der akzeptierten Antwort:
Den
+
bedeutet "1 oder mehr". Ich glaube nicht, dass Sie brauchen, um zu wiederholen\s
. Ich denke, man kann einfach schreiben'/\s+/'
.Auch, wenn Sie möchten, entfernen Sie Leerzeichen, erste und Letzte in der Zeichenfolge, fügen Sie
trim
.Mit diesen änderungen, würde der code sein:
/\s\s+/
würde nicht entsprechen den Zeilenvorschub infoo\nbar
.Verwenden Sie einfach
preg_replace()
Bekommen konnte, Weg mit
str_replace()
auf diesen einen, obwohl der code sieht nicht so sauber:Sehen es live auf ideone
$string = preg_replace("~[\r\n]~", "",$string);
\r
ZeichenSollten Sie verwenden, str_replace für seine Geschwindigkeit und die Verwendung von Anführungszeichen mit einem array
\n
und nicht\r\n
zudem ich denke, die OP fragt zu setzen, einen einzigen Platz im Ort für neue LinienPCRE-regex-Ersetzungen ausgeführt werden können mit preg_replace:
http://php.net/manual/en/function.preg-replace.php
Ersetzen würden, neue Zeile oder return-Zeichen durch ein Leerzeichen. Wenn Sie nicht wollen, etwas, um Sie zu ersetzen, ändern Sie das 2. argument
''
.preg
Funktionen PCRE, die nicht POSIX reguläre Ausdrücke. Es gibtereg
Funktionen, verwenden Sie POSIX -, aber Sie sind jetzt veraltet.Verwenden:
ersetzen-Serie Zeilenumbrüche mit einem leeren string:
oder möchten Sie wahrscheinlich ersetzen die Zeilenumbrüche durch ein Leerzeichen:
\\n
sieht schrecklich aus.\\\\
mit einem einzelnen backslash ist einfach nur schrecklich.Escape-Sequenz
\R
entspricht, eine generische newlineRegex101 Demo
Zeilenumbrüche im text sind in der Regel dargestellt als:
\r\n - auf einem windows-computer
\r - auf einem Apple-computer
\n - auf Linux
Ich bin mir nicht sicher, ob dies einen Wert hat, gegen den bereits übermittelten Antworten, aber ich kann genauso gut posten.
Whats about:
Sollte dies eine ziemlich robuste Lösung, weil \n funktioniert nicht richtig in alle Systeme wenn ich mich nicht falsch ...
dies ist das Muster das ich verwenden würde,
vielleicht funktioniert:
Diese auch entfernt tabs
Können Sie versuchen, folgenden code beibehalten wird, alle Leerzeichen und neuen Zeilen in Ihrem text.
War ich überrascht zu sehen, wie wenig jeder weiß über regex.
Strip Zeilenumbrüche in php ist
In perl
Bedeutung ersetzt alle newline-Zeichen am Ende der Zeile (für Effizienz), Optional nach einem Wagenrücklauf - mit einem Leerzeichen.
\n oder \015 ist newline.
\r oder \012 ist carriage return.
? im regex bedeutet Spiel 1 oder null des vorherigen Zeichens.
$ regex bedeutet match-Ende der Zeile.
Den ursprünglichen und besten regex-Referenz ist perldoc perlre, die jeder Programmierer wissen sollte doc ziemlich gut:
http://perldoc.perl.org/perlre.html
Hinweis: nicht alle Funktionen unterstützt alle Sprachen.
unter diesem code arbeiten alle text-bitte verwenden Sie es:
Viele dieser Lösungen hat bei mir nicht funktioniert.
Dies hat den trick aber nicht:-
Hier ist die Referenz:-
PCRE und Neue Linien
Können Sie Sie entfernen, neue Zeile und mehreren Leerzeichen.