Hallo,
Zitat von
Matze:
Wird nach der Anwendung des regulären Ausdrucks kein Absatz zwischen dem text und dem darauf folgenden Bild gemacht. Der Text klebt also direkt über dem Bild, was mir noch nicht gefällt. Ansonsten funktioniert es, soweit ich das sehen kann, alles bestens. Aber auch mit dem kleinen Schönheitsfehler könnte ich leben.
Damit sollte es gehen:
Delphi-Quellcode:
preg_replace("/(([^>])[\r\n])|^([\r\n])/m", "\\1
", $input);
Zitat von
Matze:
Was mich dennoch interessieren würde (ich weiß nicht, ob ich das so mache):
Angenommen, ich fasse solche komplexeren
HTML-Blocke in einen -
BBCode. Wie kompliziert wäre es dann, das mit regulären Ausdrücken zu lösen?
Also soooo super toll kenne ich mich mit den Perl Regex auch nicht aus, aber meiner Meinung nach würde diese Vorgehensweise das Ganze nicht sonderlich erleichtern. Du müßtest dann zunächst mal die Eingabe aufteilen in "Nicht-
HTML" und in "
HTML" (also innerhalb von ). Das ginge mit preg_replace und einer zusätzlichen Funktion recht einfach. Die Funktion selber ersetzt dann quasi die Leerzeichen. Das würde also pro gefundenem Block (
HTML/Nicht-
HTML) ein Funktionsaufruf sein. Da sollte obiges regex schneller arbeiten.
Ansonsten kann man das auch "von Hand" also ohne regex zerlegen - aber das kommt meiner Meinugn nach letztendlich alles auf das gleich raus.
Viele Grüße,
Eike