[php] BBcode funktion zerlegt umlaute im IE

vquicksilver

Mitglied
Guten Morgen. Ich habe mir eine kleine BBCODE funktion geschrieben mit der ich in meinem Gästebuch den bbcode ausgebe. Nun ist mein Problem das wenn ich die Funktion anwende das im IE die ä's ö's ü's ß's usw nicht richtig bzw falsch angezeigt werden. Ich habe schon diverse sachen probiert aber leiderb in ich zu keinem Ergebnis gekommen. Im FF funktioniert das soweit aber der IE wehrt sich. Hab ich was falsch gemacht? Parse ich irgendwo zuviel? Oder zu wenig? Könnte da bitte mal jemand drüber schauen.

Vielen Dank

Hier die Funktion:

PHP:
function bbcode($string)
	{
		$string = str_replace('[ b ]', '<span class="bold">', $string);		
		$string = str_replace('[ /b ]', '</span>', $string);

		$string = str_replace('[ i ]', '<span class="kursiv">', $string);		
		$string = str_replace('[ /i ]', '</span>', $string);

		$string = str_replace('[ u ]', '<span class="underline">', $string);		
		$string = str_replace('[ /u ]', '</span>', $string);

		$string = str_replace('[ d ]', '<span class="through">', $string);		
		$string = str_replace('[ /d ]', '</span>', $string);

		$string = str_replace('[ center]', '<p class="center">', $string);
		$string = str_replace('[ /center]', '</p>', $string);

		$string = str_replace('[ right]', '<p class="right">', $string);
		$string = str_replace('[ /right]', '</p>', $string);

		$string = str_replace('[ left]', '<p class="left">', $string);
		$string = str_replace('[ /left]', "</p>", $string);

		$string = str_replace('[ block]', '<p class="block">', $string);
		$string = str_replace('[ /block]', "</p>", $string);

		$string = str_replace('[ quote]', '<span class="bold">Quote:</span><span class="quote">', $string);
		$string = str_replace('[ /quote]', "</span>", $string);

		$string = str_replace('[ code ]', '<span class="bold">Code:</span><span class="quote">', $string);
		$string = str_replace('[ /code ]', "</span>", $string);

		$string = preg_replace('/\[reply\=(.*?)\]/i', '<span class="bold">$1</span><span class="quote">', $string);
		$string = str_replace('[/reply]', "</span>", $string);

		$string = preg_replace('/\[url\=http:\/\/(.*?)\](.*?)\[\/url\]/i', '<a href="http://$1">$2</a>',$string);
		$string = preg_replace('/\[url\=(.*?)\](.*?)\[\/url\]/i', '<a href="$1">$2</a>',$string);

		$string = preg_replace('/\[mailto\=(.*?)\]/i', '<a href="mailto:$1">$1</a>',$string);

		$string = preg_replace('/\[img\=(.*?)\]/i', '<img src="$1" alt="$1" />',$string);

		$string = preg_replace('/\[indent\=(.*?)\]/i', '<p style="margin-left:$1px;">',$string);
		$string = str_replace('', "</p>", $string);

		$string = preg_replace('/\[letter\=(.*?)\]/i', '<span style="letter-spacing:$1px;">',$string);
		$string = str_replace('[/letter]', "</span>", $string);

		$string = preg_replace('/\[line\=(.*?)\]/i', '<p style="line-height:$1px;">',$string);
		$string = str_replace('[/line]', "</p>", $string);

		$string = str_replace('[uc]', '<span class="uc">', $string);
		$string = str_replace('[/uc]', '</span>', $string);

		$string = str_replace('[sc]', '<span class="sc">', $string);
		$string = str_replace('[/sc]', '</span>', $string);


		$string = str_replace('[hr]', '<hr />', $string);

		$string = str_replace("&amp;","&",$string);
		$string = str_replace("&","&amp;",$string);
		$string = str_replace("ß","&szlig;",$string);
		$string = str_replace("ö","&ouml;",$string);
		$string = str_replace("Ö","&Ouml;",$string);
		$string = str_replace("ü","&uuml;",$string);
		$string = str_replace("Ü","&Uuml;",$string);
		$string = str_replace("ä","&auml;",$string);
		$string = str_replace("Ä","&Auml;",$string);
		$string = str_replace("’","&rsquo;",$string);
		$string = str_replace("–","&ndash;",$string);
		$string = str_replace("„","&bdquo;",$string);
		$string = str_replace("“","&ldquo;",$string);
		$string = str_replace("€","&euro;",$string);

		$string = preg_replace('/\[list\=dot\].\n/i', '<ul class="ul">', $string);
		$string = preg_replace('/\[list\=numbers\].\n/i', '<ul class="decimal">', $string);
		$string = preg_replace('/\[list\].\n/i', '<ul class="ul">', $string);
		$string = str_replace('[*]', '<li>', $string);
		$string = preg_replace('/\[\/\*\].\n/i', '</li>', $string);
		$string = str_replace('[ /list]', "</ul>", $string);

		return $string;
	}
 
Nur aus interesse... Warum willst du das replacen? Ich gehe davon aus, dass du MySql benutzt. Ö Ä Ü ß ö ä ü wird doch dort genauso in die Datenbank geschrieben und augelesen, wie andere lateinische Buchstaben oder Zahlen.
 
......Ich will die ö ä ü ß usw nicht replacen... ....
Und warum dann diese Zeilen in deinem Code ?
$string = str_replace("ß","&szlig;",$string);
$string = str_replace("ö","&ouml;",$string);
$string = str_replace("Ö","&Ouml;",$string);
$string = str_replace("ü","&uuml;",$string);
$string = str_replace("Ü","&Uuml;",$string);
$string = str_replace("ä","&auml;",$string);
$string = str_replace("Ä","&Auml;",$string);

Ich würde mal darauf tippen daß du einen falschen DOCTYPE angibst, poste doch mal den dazugehörigen HTML-Header.

Übrigens funktioniert der 2. Link nicht
 
Zurück