austrian5: Problem mit Live-Anzeige

Liebes Forum!

Im Moment Arbeite ich gerade an einer Forum-artigen Homepage. Mir war es ein anliegen, zusammen mit dem Beitrags-Formular auch gleich eine Live-Anzeige zu programmieren, bei der auch BB-Codes eingebunden werden können.
Da meine JavaScript-Kenntnisse nicht gerade überragend sind, habe ich mir mehr oder weniger die wichtigsten Code-Schnipsel zusammengebastelt.

Nachdem ich einige Objekte mit replace() ersetzt hatte, stoß ich auf folgendes Phänomen: Wenn ich zwei BB-Links hintereinander stellte, schluckte er einen Teil des Textes in den Link hinein. So wurde zum Beispiel aus

[url=http://www.selfhtml.org]Test[/url]
[url]www.google.at[/url]

in HTML etwas wie folgt:

<a href="http://www.selfhtml.org]Test[/url]  
[url" target="_blank">www.google.at</a>

Wenn nur ein Link vorliegt, gibt es keinerlei Probleme, aber bei mehreren scheint er nur den ersten und letzten Tag zu beachten.

Hier der Teil vom Code, der interessant sein könnte (übrigens in PHP, weil geprüft werden soll, ob der Besucher angemeldet ist, was die Sache ein wenig komplizierter macht):

<?php  
  
echo "<script type='text/javascript'>  
function live (){  
var title = document.formular.name.value;  
var text = \"\\n\" + document.formular.text.value + \"\\n\";  
  
text = text.replace(/</, \"&lt;\");  
text = text.replace(/>/, \"&gt;\");  
text = text.replace(/\\n(.*)\\n/ig, \"<p>\$1</p>\");  
text = text.replace(/\\r\\n|\\n/g, \"<br>\");  
  
text = text.replace(/\[url=http:\/\/(.*)\](.*)\[\/url\]/ig, \"<a href=\\\"http:\/\/\$1\\\" target=\\\"_blank\\\">$2</a>\");  
text = text.replace(/\[url=(.*)\](.*)\[\/url\]/ig, \"<a href=\\\"http:\/\/\$1\\\" target=\\\"_blank\\\">$2</a>\");  
text = text.replace(/\[url\](.*)\[\/url\]/ig, \"<a href=\\\"http:\/\/\$1\\\" target=\\\"_blank\\\">$1</a>\");  
  
...  
Text wird ausgegeben  
...  
  
}  
live();  
</script>";  
  
?>

Ich hab im Internet nichts gefunden, was mir hätte helfen können (obwohl ich ein geübter Google-User bin :P).
Wahrscheinlich ist es nur ein relativ kleiner Fehler oder ein in JavaScript übliches Phänomen.

Vielen Dank scho im Voraus

Gruß, Flo =B

  1. Hi,

    Nachdem ich einige Objekte mit replace() ersetzt hatte, stoß ich auf folgendes Phänomen: Wenn ich zwei BB-Links hintereinander stellte, schluckte er einen Teil des Textes in den Link hinein. So wurde zum Beispiel aus

    [url=http://www.selfhtml.org]Test[/url]
    [url]www.google.at[/url]

    in HTML etwas wie folgt:

    <a href="http://www.selfhtml.org]Test[/url]

    [url" target="_blank">www.google.at</a>

      
    Herzlichen Glückwunsch - du hast gerade herausgefunden, was die „Gierigkeit“ (englisch: Greediness) von regulären Ausdrücken bewirkt :-)  
    Mit diesem Stichwort solltest du auch Infos finden, wie sie abzustellen ist.  
      
    MfG ChrisB  
      
    
    -- 
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    
    1. Herzlichen Glückwunsch - du hast gerade herausgefunden, was die „Gierigkeit“ (englisch: Greediness) von regulären Ausdrücken bewirkt :-)
      Mit diesem Stichwort solltest du auch Infos finden, wie sie abzustellen ist.

      Wow, das ging ja schnell^^

      Ich war mir praktisch sicher, es wäre ein Fehler meinerseits xD
      Ist es mit (.*?) getan oder muss ich da noch sonstige Tücken beachten?

      Vielen Dank!