363 Stimmen

Neue Zeilen aus der Zeichenkette entfernen und durch ein Leerzeichen ersetzen

$string = "
put returns between paragraphs

for linebreak add 2 spaces at end

";

Ich möchte alle neuen Zeilen aus der Zeichenkette entfernen.

Ich habe diese Regex, es kann alle von ihnen zu fangen, das Problem ist, ich weiß nicht, mit welcher Funktion sollte ich es verwenden.

/\r\n|\r|\n/

$string werden sollte:

$string = "put returns between paragraphs for linebreak add 2 spaces at end ";

690voto

jwueller Punkte 29834

Sie müssen auf doppelte Zeilenumbrüche achten, die zu doppelten Leerzeichen führen würden. Verwenden Sie diesen wirklich effizienten regulären Ausdruck:

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

Mehrere Leerzeichen und Zeilenumbrüche werden durch ein einzelnes Leerzeichen ersetzt.

Editer : Wie bereits von anderen erwähnt, gibt es bei dieser Lösung Probleme mit einzelnen Zeilenumbrüchen zwischen Wörtern. Dies ist im Beispiel nicht der Fall, aber man kann sich leicht vorstellen, wie eine solche Situation entstehen könnte. Eine Alternative ist, wie folgt vorzugehen:

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

210voto

matsolof Punkte 2525

Einige Anmerkungen zu der akzeptierten Antwort:

En + bedeutet "1 oder mehr". Ich glaube nicht, dass Sie wiederholen müssen \s . Ich denke, Sie können einfach schreiben '/\s+/' .

Wenn Sie außerdem Leerzeichen am Anfang und am Ende der Zeichenkette entfernen möchten, fügen Sie trim .

Mit diesen Änderungen würde der Code lauten:

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

118voto

NullUserException Punkte 80891

Verwenden Sie einfach preg_replace()

$string = preg_replace('~[\r\n]+~', '', $string);

Sie könnten damit durchkommen str_replace() in diesem Fall, obwohl der Code nicht so sauber aussieht:

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

Sehen Sie es live auf ideone

26voto

fabrik Punkte 13697
$string = str_replace(array("\n", "\r"), ' ', $string);

25voto

Peter Punkte 8060

Ich bin mir nicht sicher, ob dies im Vergleich zu den bereits eingereichten Antworten einen Wert hat, aber ich kann es genauso gut posten.

// Create an array with the values you want to replace
$searches = array("\r", "\n", "\r\n");

// Replace the line breaks with a space
$string = str_replace($searches, " ", $string);

// Replace multiple spaces with one
$output = preg_replace('!\s+!', ' ', $string);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X