BBcode und HTMLcode

ruNN0r

Erfahrenes Mitglied
hi auf meiner seite verwende ich schon lange BBcodes und ich möchte nun das HTML codes auch deaktiviert werden. hier das tool wie ich mir das überlegt hatte jedoch wird dabei z.b. ein "ä" durch "ä" ersetzt. wie kann ich es machen das diese zeichen NICHT ersetzt werden?

Das tool:
PHP:
function bbcode($text)
{
    $text = stripslashes($text);
    $text = htmlspecialchars($text);  //HTML sperren
    $text = preg_replace("/\[B\](.*)\[\/B\]/isU","<b>$1</b>", $text);
    $text = preg_replace("/\[I\](.*)\[\/I\]/isU","<i>$1</i>", $text);
    $text = preg_replace("/\[U\](.*)\[\/U\]/isU","<u>$1</u>", $text);
    $text = preg_replace("/\[CENTER\](.*?)\[\/CENTER\]/isU","<center>$1</center>", $text);
    $text = preg_replace("/\[URL=(.*)\](.*)\[\/URL\]/isU", "<a href=\"$1\" target=\"_blank\">$2</a>", $text);
    $text = preg_replace("/\[URL\](.*)\[\/URL\]/isU", "<a href=\"$1\" target=\"_blank\">$1</a>", $text);
    $text = preg_replace("/\[EMAIL\](.*)\[\/EMAIL\]/isU", "<a href=\"mailto:$1\">$1</a>", $text);
    $text = preg_replace("/\[img\](.*)\[\/img\]/isU", "<img src=\"$1\" />", $text);
    $text = preg_replace("/\[code\](.*)\[\/code\]/isU", "<pre>$1</pre>", $text);
    $text = preg_replace("/\[COLOR=(.*)\](.*)\[\/COLOR\]/isU", "<font color=\"$1\">$2</font>", $text);
    $text = preg_replace("/\[SIZE=(.*)\](.*)\[\/SIZE\]/isU", "<font size=\"$1\">$2</font>", $text);
    $text = preg_replace("/\[FONT=(.*)\](.*)\[\/FONT\]/isU", "<font face=\"$1\">$2</font>", $text);
    $text = preg_replace("/\[LIST=(.*)\](.*)\[\/LIST\]/isU", "<ol start=\"1\" type=\"$1\">$2</ol>", $text);
    $text = preg_replace("/\[*\](.*)\[\/*\]/isU", "<li>$1</li>", $text);
    /* Smilies */
    $text = str_replace(":)","<img src=\"pics/smilies/smilie.gif\" />",$text);
    $text = str_replace(":D","<img src=\"pics/smilies/biggrin.gif\" />",$text);
    $text = str_replace(";)","<img src=\"pics/smilies/wink.gif\" />",$text);
    $text = str_replace(":o","<img src=\"pics/smilies/redface.gif\" />",$text);
    $text = str_replace(":?","<img src=\"pics/smilies/confused.gif\" />",$text);
    $text = str_replace(":(","<img src=\"pics/smilies/frown.gif\" />",$text);
    $text = str_replace(":P","<img src=\"pics/smilies/tongue.gif\" />",$text);
    $text = str_replace(";P","<img src=\"pics/smilies/tongue2.gif\" />",$text);
    $text = str_replace(":rolleyes:","<img src=\"pics/smilies/rolleyes.gif\" />",$text);
    $text = str_replace(":]","<img src=\"pics/smilies/pleased.gif\" />",$text);
    $text = str_replace("x(","<img src=\"pics/smilies/mad.gif\" />",$text);
    $text = str_replace(":evil:","<img src=\"pics/smilies/evil.gif\" />",$text);
    $text = str_replace("8)","<img src=\"pics/smilies/cool.gif\" />",$text);
    $text = str_replace(":baby:","<img src=\"pics/smilies/baby.gif\" />",$text);
    $text = str_replace(":happy:","<img src=\"pics/smilies/happy.gif\" />",$text);
    $text = nl2br($text);
    return $text;
}
 
Hallo,
ich habe nur mal eine allgemeine Frage. Mich interessiert, warum in der Funktion immer wieder $1 und $2 vorkommen. Ich habe immer gedacht, dass Variablennamen nicht mit Ziffern beginnen dürfen, außerdem wird der Variable für mich kein Wert zugewiesen.

schiese
 
Diese Notation ist keine richtige Variable, sondern nur ein Platzhalter, der von der preg_replace()-Funktion verstanden und durch der Ergebnis des x-ten Suchmustern ersetzt wird. Ein „$2“ wird also durch das Ergebnis des zweiten Suchmusters ersetzt.
 
Was spricht dagegen, dass ä durch &auml; ersetzt wird?

hmm ja also bei der ausgabe willte ich eigentklich ein ä anstatt &auml; stehen haben ^^
vielleicht habe ich auch einfach nur den falschen befehl denn den habe ich durch die suchfunktion hier im Forum gefunden, denn ich benutze die vorher :)

nee mal ernst ich habe schon gesucht und ich will nur das die Leute keine HTML codes verwenden können und zwar so das die HTML codes dann angezeigt werden auf der Seite. Klappt ja auch bis auf die sonderzeichen ^^

Die htmlspecialchars()-Funktion sollte eigentlich nur die HTML-Syntaxzeichen ersetzten. Ist das genn die gesamte Verarbeitung der Daten?

Ja da is alles!

PHP:
function bbcode($text)
{
    $text = stripslashes($text);
    $text = htmlspecialchars($text);  //HTML sperren
    $text = preg_replace("/\[B\](.*)\[\/B\]/isU","<b>$1</b>", $text);
    $text = preg_replace("/\[I\](.*)\[\/I\]/isU","<i>$1</i>", $text);
    $text = preg_replace("/\[U\](.*)\[\/U\]/isU","<u>$1</u>", $text);
    $text = preg_replace("/\[CENTER\](.*?)\[\/CENTER\]/isU","<center>$1</center>", $text);
    $text = preg_replace("/\[url=(.*)\](.*)\[\/URL\]/isU", "<a href=\"$1\" target=\"_blank\">$2</a>", $text);
    $text = preg_replace("/\[URL\](.*)\[\/URL\]/isU", "<a href=\"$1\" target=\"_blank\">$1</a>", $text);
    $text = preg_replace("/\[EMAIL\](.*)\[\/EMAIL\]/isU", "<a href=\"mailto:$1\">$1</a>", $text);
    $text = preg_replace("/\[img\](.*)\[\/img\]/isU", "<img src=\"$1\" />", $text);
    $text = preg_replace("/\[code\](.*)\[\/code\]/isU", "<pre>$1</pre>", $text);
    $text = preg_replace("/\[COLOR=(.*)\](.*)\[\/COLOR\]/isU", "<font color=\"$1\">$2</font>", $text);
    $text = preg_replace("/\[SIZE=(.*)\](.*)\[\/SIZE\]/isU", "<font size=\"$1\">$2</font>", $text);
    $text = preg_replace("/\[font=(.*)\](.*)\[\/FONT\]/isU", "<font face=\"$1\">$2</font>", $text);
    $text = preg_replace("/\[list=(.*)\](.*)\[\/LIST\]/isU", "<ol start=\"1\" type=\"$1\">$2</ol>", $text);
    $text = preg_replace("/\[*\](.*)\[\/*\]/isU", "<li>$1</li>", $text);
    /* Smilies */
    $text = str_replace(":)","<img src=\"pics/smilies/smilie.gif\" />",$text);
    $text = str_replace(":D","<img src=\"pics/smilies/biggrin.gif\" />",$text);
    $text = str_replace(";)","<img src=\"pics/smilies/wink.gif\" />",$text);
    $text = str_replace(":o","<img src=\"pics/smilies/redface.gif\" />",$text);
    $text = str_replace(":?","<img src=\"pics/smilies/confused.gif\" />",$text);
    $text = str_replace(":(","<img src=\"pics/smilies/frown.gif\" />",$text);
    $text = str_replace(":P","<img src=\"pics/smilies/tongue.gif\" />",$text);
    $text = str_replace(";P","<img src=\"pics/smilies/tongue2.gif\" />",$text);
    $text = str_replace(":rolleyes:","<img src=\"pics/smilies/rolleyes.gif\" />",$text);
    $text = str_replace(":]","<img src=\"pics/smilies/pleased.gif\" />",$text);
    $text = str_replace("x(","<img src=\"pics/smilies/mad.gif\" />",$text);
    $text = str_replace(":evil:","<img src=\"pics/smilies/evil.gif\" />",$text);
    $text = str_replace("8)","<img src=\"pics/smilies/cool.gif\" />",$text);
    $text = str_replace(":baby:","<img src=\"pics/smilies/baby.gif\" />",$text);
    $text = str_replace(":happy:","<img src=\"pics/smilies/happy.gif\" />",$text);
    $text = nl2br($text);
    return $text;
}  

/*
Datenbank abfrage
*/
//ausgabe
echo bbcode($message);
so wird es dann am ende aussehen aber den wichtigsten Teil habe ich ja gepostet!
 
Und wie sieht der Wert der $message-Variable aus oder wo kommt er her? Wird er vielleicht schon vorher, etwa vor einer Speicherung bereits formatiert?
 
also die daten sind in einer MYSQL datenbank gespeichert und werden NUR durch diese Funktion bei der ausgabe formatiert. Soweit is mir das bekannt ich habe da nicht eingebaut das etwas auslösen würde.

in der Datenbank steht:
wie kann ich meine stats, berufe etz in die seite einbringen?

hab nämlich mom nich viel zeit mich schlau zu lesen

meld dich ma bro

auf der Seite steht:
wie kann ich meine stats, berufe etz in die seite einbringen?

hab n&auml;mlich mom nich viel zeit mich schlau zu lesen

meld dich ma bro
 
Pufferst du vielleicht die Ausgabe und schickst diese nochmals durch eine Formatierungsfunktion? Was passiert, wenn du der Funktion direkt eine Zeichenkette mit Umlauten übergibst?
 
OMG ich konnte mir das alles nicht erklären und habe eine unahänige datei erstellt die einfach nur ein "ä" ausgibt und es hat geklappt! ich habe das script von mir nochmal unter die lupe genommen und folgendes gefunden: $text=htmlentities($text);

was ja das gleiche ist wie das was ich gemacht habe... aber ich kann mich nicht errinnern jemals sowas eingebaut zu haben! habe es vielleicht nachträglich eingebau und dann nur in dieses script die anderen haben immernoch probleme mit den HTML code bzw. verwenden sie! Naja wie gesagt war mein fehler! habe da irgendwie nicht genau hingeschaut! Tut mir leid die belästigung! aber daraus lernt man gut ausgefüllte notizen über ein script machen sich gut ^^
 
Zurück