Guten Tag,
ich habe folgendes Problem:
Ich habe mir eine Funktiongeschrieben, welche den BBCode in in HTML-Tags usw. umwandelt, damit ich den Text formatiert ausgeben kann.
Nun möchte ich meine Seite aber auch gerne xhtml strict halten.
Dazu muss ich die URLs, welche u.a. "&"s enthalten mit htmlspecialchars() parsen.
Wenn ich jedoch den ganzen Text parse, werden nicht nur die "&"s zu "&"s, sondern auch die html-tags (<, >) zu ">" bzw. "<". Also die Formatierung taugt nichts.
Wie kann ich das intelligenter anstellen, das sowohl die html-tags bestehen bleiben, jedoch auch die URLs html-strict werden?
Hier noch meine Funktion, bin natürlich auch für weitere Tipps offen
ich habe folgendes Problem:
Ich habe mir eine Funktiongeschrieben, welche den BBCode in in HTML-Tags usw. umwandelt, damit ich den Text formatiert ausgeben kann.
Nun möchte ich meine Seite aber auch gerne xhtml strict halten.
Dazu muss ich die URLs, welche u.a. "&"s enthalten mit htmlspecialchars() parsen.
Wenn ich jedoch den ganzen Text parse, werden nicht nur die "&"s zu "&"s, sondern auch die html-tags (<, >) zu ">" bzw. "<". Also die Formatierung taugt nichts.
Wie kann ich das intelligenter anstellen, das sowohl die html-tags bestehen bleiben, jedoch auch die URLs html-strict werden?
Hier noch meine Funktion, bin natürlich auch für weitere Tipps offen
PHP:
function log_format($text)
{
$text = stripslashes($text);
$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","<b>$1</b>", $text);
$text = preg_replace("/\[center\](.*?)\[\/center\]/isU","<center>$1</center>", $text);
$text = preg_replace("/\[url\=\"(.*)\"\](.*)\[\/url\]/isU", "<a href=\"$1\">$2</a>", $text);
$text = preg_replace("/\[e-mail\=\"mailto:(.*)\"\](.*)\[\/e-mail\]/isU", "<a href=\"mailto:$1\">$2</a>", $text);
$text = preg_replace("/\[img\](.*)\[\/img\]/isU", "<img src=\"$1\" />", $text);
$text = preg_replace("/\[box\](.*)\[\/box\]/isU", "<pre>$1</pre>", $text);
$text = nl2br($text);
return $text;
}