• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

nl2br entfernt html

tobi-848

New member
Hallo, ich wandle die \n-Tags mit preg_match in <br>

PHP:
$string = preg_replace("#[\n]#", "<br>", $string);

Das ganze funktioniert auch Prima, nur bei der Eingabe von zB.
HTML:
<font color="red">test</font>
wird der HTML Tag getrennt. Die Ausgabe ist dann nur noch
HTML:
color="red">test
.

Kann mir einfach nicht erklären wieso html-Tags Steuerzeichen wie \n enthalten sollen.

HTML:
<font
gibt
HTML:
nichts
aus.

HTML:
< font
gibt
HTML:
< font
aus.

HTML:
< font color= " red " >test</font>
gibt
HTML:
 < font color= " red "
>test
aus.


Bitte um Hilfe, bin am verzweifeln.
 
In Perl darf man auch andere Zeichen als einen Slash verwenden, vielleicht ist das in PHP auch so?
Damit spart man sich das maskieren des Slash
 
Wobei - wird in PHP wirklich mit einem String ein regulärer Ausdruck erzeugt?
Wenn nicht macht das tatsächlich keinen Sinn. Aber ich kenn mich mit PHP nicht so gut aus.
 
Da war ich wohl zuviel in JS, wo man entweder 'pattern' oder /pattern/ schreiben muss, aber '/pattern/' wäre dort Unsinnig.
 
nur bei der Eingabe von zB.
HTML:
<font color="red">test</font>
wird der HTML Tag getrennt. Die Ausgabe ist dann nur noch
HTML:
color="red">test
.
Kann ich nicht nachvollziehen, funktioniert wunderbar. Ich behaupte Dein Fehler liegt woanders.
Außerdem ist es komisch, dass Du den Namen nl2br kennst, die gleichnamige Funktion aber nicht benutzt, und stattdessen auf reguläre Ausdrücke zurückgreifst.
 
PHP hat für RegExp keinen nativen Typ, deswegen muss man mit Strings arbeiten. Die Begrenzer (muss kein / sein) müssen enthalten sein, damit man etwaige Flags setzten kann - wie würdet ihr sonst ein /[a-z]/i schreiben?

@Arcsinh: preg_match erwartet als Pattern ein String. preg_replace erwartet mixed, da man auch einen Array übergeben kann - einfach Doku dazu lesen... das mit den Arrays ist manchmal recht praktisch.

@tobi-848: Ich kann das auch nicht so 100%ig nachvollziehen, aber dein Pattern ist auch nicht ganz korrekt: "/\\n/"

PS: Ich finde die native Lösung von JS auch besser...
 
Zurück
Oben