bb-code [code]

deadline

Erfahrenes Mitglied
hi,
ich bin echt zu dusselig, den fehler zu finden...
mal vorweg, ihr könnt das folgende beispiel unter:
http://crazzytastatur.cr.funpic.de/profil.html nachvollziehen.
bb codes [fett] [kursiv] und das code tag, wie hier...(wenn ichs jetzt hinschreib sieht mans nimmer, sondern wird als bb interpretiert)...

also das problem ist bei code...

ins textfeld gibt man beliebigen schmarrn rein... zuerst mache ich die zeilenumbrüche "sichtbar" mit nl2br()
dann formatiere ich mit htmlspecialchars die html tags weg, damit keiner irgendwie html da reinschmuggln kann...

Code:
<html>
<head>
<title>Dein Text</title>
<link rel="stylesheet" type="text/css" href="http://crazzytastatur.cr.funpic.de/images/style.css">
</head>
<body>
<?php 
htmlspecialchars($text);
strip_tags($text);
$text = nl2br($text); 
$text = preg_replace("(\[fett\](.+?)\[\/fett])is",'<b>$1</b>',$text); 
$text = preg_replace("(\[kursiv\](.+?)\[/kursiv\])is",'<i>$1</i>',$text); 
$text = preg_replace("(\[code\](.+?)\[/code\])is",'<table border=1 length=100%><tr><td><p>Code:</p><p>$1</p></td></tr></table>',$text);
 
echo $text;
?> 
</body>
</html>

also das ist der code. wenn ich zwischen den code tags jetzt z. B. das eingebe:

echo "<b>test</b>";

kommt komischerweise das raus:

Code:
echo \"[ b ]test[ /b ]\";
normalerweise hab ich mit htmlspecialchars() und strip_tags() die html tags als darzustellende zeichen gemacht, oder hab ich wieder einen kompletten denkfehler drin?
 
mysql_fetch_array hat gesagt.:
normalerweise hab ich mit htmlspecialchars() und strip_tags() die html tags als darzustellende zeichen gemacht
Hast du eben nicht, da du den Rückgabewert der Funktionen nicht in $text übernimmst.
PHP:
<?php 
$text = htmlspecialchars($text);
$text = strip_tags($text);
$text = nl2br($text); 
$text = preg_replace("(\[fett\](.+?)\[\/fett])is",'<b>$1</b>',$text); 
$text = preg_replace("(\[kursiv\](.+?)\[/kursiv\])is",'<i>$1</i>',$text); 
$text = preg_replace("(\[code\](.+?)\[/code\])is",'<table border=1 length=100%><tr><td><p>Code:</p><p>$1</p></td></tr></table>',$text);
 
echo $text;
?>

Gruß
Marvin
 
Zurück