reg. Ausdrücke - Script funkioniert nicht ganz

DaRealMC

Erfahrenes Mitglied
Ich habe im Netz folgendes Script gefunden, dass BBCode in HTML wandelt.
PHP:
<?
function bbcode ($entry) {
global $query,$result2,$connect,$replace,$table_smilies;
    /*
    $query="SELECT * FROM $table_smilies";
    $result2 = mysql_query($query, $connect);
    while($replace=mysql_fetch_array($result2)){
    $entry = preg_replace("/".preg_quote($replace[ code ])."/","<img src=\"$replace[htmlreplace]\">",$entry);}
    */
$entry = eregi_replace("
","<br>",$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("\[mail\]([^\[]+)\[/mail\]","<a href=\"mailto:\\1\">\\1</a>",$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; } 
?>
Allerdings klappt das mit dem Beispiel News-Seite nicht.
Ich kenne mich mit reg. Ausdrücken jetzt auch nicht soooo gut aus, aber ich kann hier keinen Grund finden, wieso das nicht geht.
Danke schon mal :)
(habe es sowohl mit einem Python Handbuch (reg. Ex. sind so weit ich das sehe beinahe identisch) wie auch mit php.net probiert)
 
Ahhhh, das ist der Punkt. Habe mich zu sehr auf das NACH den Anführungszeichen konzentriert, dass mir diese gar nicht aufgefallen sind.
Danke, habe einen Eintrag ohne \" hinzugefügt und auch diese links werden nun umgesetzt.
 
Du solltest beachten, dass die eckigen Klammern legitime Zeichen eines URLs sind und es somit zu Konflikten und Fehlinterpretationen kommen kann.
 
Bei dem Ausmaß, in dem ich das verwende, spielt das keine Rolle.
Beitreibe ein Forum, in dem die Mitglieder Veranstaltungen eintragen können. Diese werden von dort automatisch in den Kalender des Forums gespeichert (WBB2). Nun will ich diese Veranstaltungen aber auch auf dem Portal ausgeben. Bisher war es so, dass dort nur das Event als Link zum WBB2-Kalender stand. Jetzt kann ich unabhängig vom Forum auch die Beschreibung auf dem Portal ausgeben. Und wenn da bei vereinzelten Links die URL mal nicht korrekt umgesetzt wird, ist das kein Beinbruch.
Schlimmer finde ich da schon eher, dass ich Valides CSS und XHTML 1.0 hab und der IE trotzdem Müll anzeigt http://people.freenet.de/mciglo/motz.gif
Aber das ist ja n alt bekanntes Thema...
 
Hab nun doch noch etwas gefunden. Und zwar stehen in der DB viele Links mit "&". Um die Seite erfolgreich zu validieren, müsste ich diese auch in &amp; ändern.

PHP:
$entry = eregi_replace("&","test1",$entry);

wäre ja zu einfach gewesen...
 
Wenn mich jetzt nicht alles täuscht, wird die hiermit umgesetzt
PHP:
$entry = eregi_replace("\[url=\"([^\"]+)\"]([^\[]+)\[/url\]","<a href=\"\\1\" target=\"_blank\">\\2</a>",$entry);

Hilft mir aber nicht beim '&'
 
Zurück