11 Stimmen

Gegenstück zu nl2br? Ist es str_replace?

Also ist die Funktion nl2br praktisch. Außer in meiner Web-App möchte ich das Gegenteil tun, Zeilenumbrüche als neue Zeilen interpretieren, da sie in ein vorab ausgefülltes Formular ausgegeben werden.

str_replace kannnehmen und es durch das ersetzen, was ich will, aber wenn ich \n eingebe, gibt es buchstäblich einen Backslash und ein n aus. Es funktioniert nur, wenn ich einen buchstäblichen Zeilenumbruch in die Mitte meines Skripts setze und die Einrückung unterbreche (sodass keine Leerzeichen am Ende stehen).

Siehe:

    ','\n',$foo)?>

Fehlen mir Escape-Zeichen? Ich glaube, ich habe jede Kombination ausprobiert...

26voto

Pascal MARTIN Punkte 384469

Es wird wahrscheinlich einige Situationen geben, in denen Ihr Code nicht ausreicht; was halten Sie also von so etwas, um Ihren Ersatz zu machen:

$html = 'this issometext !';
$nl = preg_replace('##i', "\n", $html);
echo $nl;

_d. h. etwas komplexer als ein einfacher str_replace ;-)_

Hinweis: Ich würde im Allgemeinen sagen, verwenden Sie keine Regex zum Manipulieren von HTML - aber in diesem Fall, wenn man bedenkt, dass das Regex ziemlich einfach wäre, nehme ich an, dass es in Ordnung wäre.

Außerdem habe ich `"\n"` verwendet

  • d. h. ein Zeilenumbruch: \n
  • in einem doppelt geschriebenen String, sodass er als Zeilenumbruch interpretiert wird und nicht als Literal \n

Grundlegend sieht ein `
`-Tag normalerweise so aus:

  • oder, mit beliebig vielen Leerzeichen vor dem /

Und das ist der Punkt, an dem str_replace nicht ausreicht.

13voto

ryeguy Punkte 62987

Sie möchten das hier:

',"\n",$foo)?>

Sie haben wahrscheinlich vergessen, doppelte Anführungszeichen zu verwenden. Zeichenketten werden nur auf spezielle Zeichen geparst, wenn Sie doppelte Anführungszeichen verwenden.

12voto

Amy B Punkte 17616

Schreiben Sie '\n'? Weil \n nur korrekt interpretiert wird, wenn Sie es mit doppelten Anführungszeichen umgeben: "\n".

Abseits des Themas: die Syntax ist böse. Bitte verwenden Sie sie nicht zum Wohl der anderen Entwickler in Ihrem Team.

2voto

mgutt Punkte 5317

Eine Alternative zu @PascalMARTIN 's Antwort:

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

Es funktioniert nicht mit mehreren Leerzeichen wieaber das sollte ein sehr seltener Fall sein.

0voto

user2585941 Punkte 34

Ich habe einfach nl2br() übersprungen und es auf eine andere Weise verwendet, wie folgt:

$post_content  = str_replace('\n',"",$post_content );

und alles funktioniert einwandfrei.

Für eine vollständige Beschreibung besuchen Sie bitte meinen Blog hier:

Wie man nl2br und reverse br2nl verwendet

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