Ersetzen von [u] .. [/u] durch <u> .. </u>
Daniel
- perl
Hallo!
Wie kann ich folgendes mit Perl machen:
// underline text
$post = preg_replace("/[u](.*)[/u]/iUms","<u>\1</u>",$post);
Ich denke ihr wisst was ich such!
Danke schonmal!
Daniel
你好 Daniel,
Wie kann ich folgendes mit Perl machen:
// underline text
$post = preg_replace("/[u](.*)[/u]/iUms","<u>\1</u>",$post);
$post =~ s/[u](.*?)[/u]/<u>$1</u>/ig
Du solltest dir aber klar sein, dass das uU nicht hinhaut. Da brauchst du
schon einen richtigen[tm] Parser fuer.
再见,
CK
$post =~ s/[u](.*?)[/u]/<u>$1</u>/ig
Du solltest dir aber klar sein, dass das uU nicht hinhaut. Da brauchst du
schon einen richtigen[tm] Parser fuer.
Was gibts dabei für Problem bzw. kann es geben?
Gibts irgendwo ein Modul für solche Zwecke?
再见,
CK
Danke!
Daniel
你好 Daniel,
$post =~ s/[u](.*?)[/u]/<u>$1</u>/ig
Du solltest dir aber klar sein, dass das uU nicht hinhaut. Da brauchst
du schon einen richtigen[tm] Parser fuer.Was gibts dabei für Problem bzw. kann es geben?
Einfachstes Beispiel: verschachtelte <ul> sind nicht erlaubt, wuerden aber
durch deinen Regex erstellt. Faengst du mit mehreren solcher BBCodes an,
kann es sein, dass sehr invalides HTML produziert wird.
Gibts irgendwo ein Modul für solche Zwecke?
Ja, HTML::BBCode. Ich habe aber keinerlei Ahnung, wie gut das ist.
再见,
CK
Einfachstes Beispiel: verschachtelte <ul> sind nicht erlaubt, wuerden aber
durch deinen Regex erstellt. Faengst du mit mehreren solcher BBCodes an,
kann es sein, dass sehr invalides HTML produziert wird.
Ok, ist logisch.
Ja, HTML::BBCode. Ich habe aber keinerlei Ahnung, wie gut das ist.
So auf den ersten Blick funktionierts mal ganz gut. Vielen Dank!
再见,
CK
Daniel
Tag Christian.
Gibts irgendwo ein Modul für solche Zwecke?
Ja, HTML::BBCode.
Oh, das passt mir aber gut in den Kram, werde mal berichten. Danke für den Hinweis :)
Siechfred
Tag.
So, habe das Modul getestet, sieht auch ganz gut aus. Verschachtelungen werden grundsätzlich richtig umgesetzt, der erzeugte HTML-Code ist valide. Einzig die Verschachtelung von [url], [img] und [email] funktioniert noch nicht so recht, es kommt ziemlicher Blödsinn raus, wenn man sowas parsen lässt (z.B. weil der Link fett geschrieben werden soll):
[url][b]http://www.example.org[/b][/url]
Dem kommt man aber (bis zur neuen Version, an der zurzeit gearbeitet wird) durch Änderungen an den verwendeten Regulären Ausdrücken bei, indem man in den relevanten Originalzeilen
my %match = (
url => qr|[url=?([^]]+?)?](.+?)[/url]|iso,
email => qr|[email](.+?)[/email]|iso,
img => qr|[img](.+?)[/img]|iso );
das (.+?) durch ([a-zA-Z0-9@&_./,;?]+?) ersetzt (ich hoffe, dass die Zeichenklasse vollständig ist). Bis zur neuen Version allemal eine Krücke, denke ich :)
Siechfred