Problem mit bb Codes und Links

ciberjoerg

Erfahrenes Mitglied
In meinem bbcode Script gibts ein kleines Problem,
folgendes wenn ich einen link erstelle Geht alles ohne Probleme, doch ab dem 2. Link wirds Problematisch.
und zwar Wird mir vom 1. ling bis ende des 2. links der gesamte text dazwischen ersetzt.
mein php code:
PHP:
<?
function bbcode ($entry) {
global $query,$result2,$connect,$replace,$table_smilies;
$entry = eregi_replace("
","",$entry);

//smilies  &auml; &Uuml; &uuml; &Ouml; &ouml; &szlig; &curren; 
$entry = eregi_replace("\^\^","<img src=\"smilies/smilie.gif\" border=\"0\">",$entry);
$entry = eregi_replace("\*hello\*","<img src=\"smilies/hello.gif\" border=\"0\">",$entry);
$entry = eregi_replace("\*gag\*","<img src=\"smilies/gag.gif\" border=\"0\">",$entry);
$entry = eregi_replace("\*dow\*","<img src=\"smilies/dow.gif\" border=\"0\">",$entry);

$entry = eregi_replace("\[b\]([^\[]+)\[/b\]","<b>\\1</b>",$entry);
$entry = eregi_replace("\[i\]([^\[]+)\[/i\]","<i>\\1</i>",$entry);
$entry = eregi_replace("\[u\]([^\[]+)\[/u\]","<u>\\1</u>",$entry);
$entry = eregi_replace("\[img\]([^\[]+)\[/img\]","<img src=\"\\1\" border=\"0\">",$entry);
$entry = eregi_replace("\[url\]([^\[]+)\[/url\]","<a href=\"\\1\" target=\"_blank\">\\1</a>",$entry);
$entry = eregi_replace("\[url=([^\"]+)]([^\[]+)\[/url\]","<a href=\"\\1\" target=\"_blank\">\\2</a>",$entry);


return $entry; } 
?>
Bei den smilies Funktioniert alles wunderbar, nur die links machen probleme.
wenn ich
Code:
[ url=http://darkbase.net]darkbase[ /url] irgend ein text dazwischen [ url=http://nijo.de.ms]meine seite[ /url]
erscheint ein Link am Ende mit text meine seite und einem link mit der url http://darkbase.net]darkbase[/url%5D%20irgend%20ein%20text%20dazwischen%20%20%5Burl=http://nijo.de.ms.

Was ist da das Problem?
 
Zuletzt bearbeitet:
Hallo,

erstmal solltest du die preg_*-Funktionen verwenden, da ereg* als deprecated (veraltet) markiert ist.

Zum zweiten, wenn du auf preg_* umgestiegen bist, kannst du den gierigen Modifizierer verwenden, der das Problem lösen sollte:

PHP:
$entry = preg_replace("/\[url=([^\"]+)]([^\[]+)\[\/url\]/gi","<a href=\"\\1\" target=\"_blank\">\\2</a>",$entry);
 
Das heist ich schreiben nun nicht mer eregi_replace sondern preg_replace oder?

Das Problem hab ich inzwischen gefunden lag an einem " Zeichen an dessen stelle musste ein [ eingefügt werden.
 
Zurück