Quidoff
Lieutenant
- Registriert
- Feb. 2005
- Beiträge
- 897
Hallo,
ich versuche gerade für ein Gästebuch die Gestaltung mit BB-Code zu ermöglichen.
Ich hänge bei dem URL-Tag:
In der Variable $post steht der eingegebene Text.
Der Code funktioniert so lange gut, bis man ein IMG-Tag in einem URL-Tag verschachteln will.
Zum Beispiel:
Die Leerzeichen sind natürlich nur dazu da, damit das BB-Script des Forums die Tags nicht umwandelt.
Bei dieser Eingabe wird nur das IMG-Tag umgewandelt. Der URL-Tag bleibt unverändert.
Wie muss der Ausdruck in "eregi_replace()" richtig lauten, damit so ein Bildlink richtig umgewandelt wird?
//edit
Ich hab mir mal ne Inspiration im phpBB2 Code geholt.
So klappts nun:
ich versuche gerade für ein Gästebuch die Gestaltung mit BB-Code zu ermöglichen.
Ich hänge bei dem URL-Tag:
PHP:
$post = eregi_replace('\[url=([^\[]*)\]([^\[]*\[\])\[/url\]', '<a href="\\1" target="_blank">\\2</a>', $post);
$post = eregi_replace('\[img\]([^\[]*)\[/img\]', '<img alt="Bild" src="\\1" />', $post);
Der Code funktioniert so lange gut, bis man ein IMG-Tag in einem URL-Tag verschachteln will.
Zum Beispiel:
Code:
[ url=http://www.opera.com/][img ]http://img102.imageshack.us/img102/980/gestiefelterkater8lr.th.jpg[/img ][/url ]
Bei dieser Eingabe wird nur das IMG-Tag umgewandelt. Der URL-Tag bleibt unverändert.
HTML:
[url=http://www.opera.com/]<img alt="Bild" src="http://img102.imageshack.us/img102/980/gestiefelterkater8lr.th.jpg" />[/url]
Wie muss der Ausdruck in "eregi_replace()" richtig lauten, damit so ein Bildlink richtig umgewandelt wird?
//edit
Ich hab mir mal ne Inspiration im phpBB2 Code geholt.
So klappts nun:
PHP:
$post = preg_replace("#\[url=((www|ftp)\.[\w\#$%&~/.\-;:=,?@\[\]+]*?)\]([^?\n\r\t].*?)\[/url\]#is", '<a href="http://\\1" target="_blank">\\3</a>', $post);
$post = preg_replace("#\[url=([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+]*?)\]([^?\n\r\t].*?)\[/url\]#is", '<a href="\\1" target="_blank">\\2</a>', $post);
$post = eregi_replace('\[img\]www.([^\[]*)\[/img\]','<img alt="Bild" src="http://www.\\1" />', $post);
$post = eregi_replace('\[img\]([^\[]*)\[/img\]', '<img alt="Bild" src="\\1" />', $post);
Zuletzt bearbeitet:
(gelöst)