php include - function verschluckt was?

lanfire

Grünschnabel
Hallo,
ich schreibe gerade ein Forum als Facharbeit für die Schule. Jetzt möchte ich gerne eine function schreiben, die aus einem String alle umlaute in html code umwandelt.

PHP:
function umlaute($text)
{
	$pattern = array("ä","Ä","ü","Ü","ö","Ö","ß");
	$replace = array("ä","Ä","ü","Ü","ö","Ö","ß");
	$str = str_replace($pattern,$replace,$text);
	return $str;
}
diese function funktioniert soweit auch ganz hervorragend, aber wenn ich sie jetzt in eine externe datei packe (function_allgemein.php) und diese dann includiere dann tut sie nix mehr außer mir den vorhergehenden string wieder auszugeben.

Woran kann das liegen?

gruß lanfire
 
hi lanfire!

Bei mir funktioniert das includen einwandfrei. (habe php 5.2.5)

hast du vielleicht die phptags vergessen?

die datei die du includen willst müsste dann so aussehen

PHP:
<?php
function umlaute($text) 
{ 
    $pattern = array("ä","Ä","ü","Ü","ö","Ö","ß"); 
    $replace = array("&auml;","&Auml;","&uuml;","&Uuml;","&ouml;","&Ouml;","&szlig;"); 
    $str = str_replace($pattern,$replace,$text); 
    return $str; 
}  
?>
 
[phpf]htmlentities[/phpf] erledigt das bereits für dich, inklusive einiger anderer Zeichen.
 
Zuletzt bearbeitet:
Hi,

vielleicht sind die Hauptdatei und die zu inkludierende Datei in unterschiedlichen Kodierungen gespeichert.
Ansonsten siehe Felix.

Es ist im Übrigen nicht nötig, Umlaute durch ihre Entitäten zu ersetzen, wenn man eine durchgängige Kodierung verwendet.

LG
 
bei htmlentities() kommt folgendes raus
Code:
Hier könnte alles mögliche stehen wie zum beispäl ein nätter alt�er mönch

deswegen mein umweg......


neeee die <?php ?> tags hab ich....

ich hab php 5.2.8
 
Zuletzt bearbeitet:
@ Threadersteller: Wie wäre es, wenn Du uns den relevaten Code mal postest? Hast Du error_reporting auf E_ALL gestellt? Außerdem stimmt was mit deienr Kodierung nicht. Guck mal in die Doku von htmlentities(); dort findest Du Infos, wie Du den entsprechenden Zeichensatz übergeben kannst. Dann erhälst Du auch vernünftige Rückgabewerte. ;)
 
Hi,



Warum willst Du diese Ersetzung überhaupt machen?

LG

Gute Frage....

Ich habe Probleme mit ausgelesenen Daten, wenn diese Sonderzeichen enthalten.



Wenn ich z.B. einen String auslesen und den mit echo ausgeben möchte, dann kommt zwar das "ä" aber nicht "&auml;" oder sogar nur ein ?.

@ Threadersteller: Wie wäre es, wenn Du uns den relevaten Code mal postest? Hast Du error_reporting auf E_ALL gestellt? Außerdem stimmt was mit deienr Kodierung nicht. Guck mal in die Doku von htmlentities(); dort findest Du Infos, wie Du den entsprechenden Zeichensatz übergeben kannst. Dann erhälst Du auch vernünftige Rückgabewerte. ;)

aktueller code:
PHP:
<?php
function foren_anzeigen($row_kategorie,$nutzerebene)
{
	echo "<br><div class='text'> <h3>" . $row_kategorie;
			echo  "</h3>"; // Kategorie erstellen
			echo  "<table align='center' class='kategorie' width='100%' border='0' cellspacing='1' cellpadding='1'>
				<tr><td width='50%'><h4>Foren</h4></td>
				<td width='30%'><h4>Letzter Beitrag</h4></td>
				</tr>";
			if($nutzerebene == "allgemein")
			{
				$sql4 = mysql_query("SELECT `forenname` , `beschreibung` , `nutzerebene` , `ID` FROM `foren` WHERE `kategorie` = '" 
				. $row_kategorie . "' AND `nutzerebene` = 'allgemein'");
			}
			else if($nutzerebene == "admin")
			{
				$sql4 = mysql_query("SELECT `forenname` , `beschreibung` , `nutzerebene` , `ID` FROM `foren` WHERE `kategorie` = '" 
				. $row_kategorie . "'");
			}
			else if($nutzerebene == "member")
			{
				$sql4 = mysql_query("SELECT `forenname` , `beschreibung` , `nutzerebene` , `ID` FROM `foren` WHERE `kategorie` = '" 
				. $row_kategorie . "' AND (`nutzerebene` = 'user' OR `nutzerebene` = 'member' OR `nutzerebene` = 'allgemein')");
			}
			else if($nutzerebene == "user")
			{
				$sql4 = mysql_query("SELECT `forenname` , `beschreibung` , `nutzerebene` , `ID` FROM `foren` WHERE `kategorie` = '" 
				. $row_kategorie . "' AND (`nutzerebene` = 'user' OR `nutzerebene` = 'allgemein')");
			}
			while($row4 = mysql_fetch_array($sql4))
			{
				echo "	
					<tr>
   					<td width='50%'><a class='foren_link' href='themen.php?forum=" . $row4['ID'] ."'>" . $row4['forenname'] . "</a></td>
   					<td width='50%'>";
				echo $row4['titel'];
				// Letzten Beitrag raussuchen
				$sql3 = mysql_query("SELECT * FROM `themen` WHERE `foren_id` = " . $row4['ID'] . " ORDER BY `erstellungszeitpunkt` DESC  LIMIT 0 , 1");
				$count = @mysql_num_rows($sql3);
				if($count == 0)
				{
					echo "</td>
   						<td width='30%'>&nbsp;</td>
						</tr>
				 		<tr>
 						<td width='50%'>" . $row4['beschreibung'] . "</td>
   						<td width='30%'>noch keine Eintr&auml;ge</td>
						<td width='20%'>&nbsp;</td>
						</tr>";
				}
				else
				{
					while($row3 = mysql_fetch_array($sql3))
					{
						echo $row3['titel'];
						$ersteller = $row3['ersteller'];
						list($erstellungsdatum,$erstellungszeit) = timeformat($row3['erstellungszeitpunkt']);
					}
									
					echo "</td>
   						<td width='30%'>Themen:" . $count . "</td>
						</tr>
				 		<tr>
 						<td width='50%'>" . $row4['beschreibung'] . "</td>
   						<td width='30%'>erstellt von <a class='user_link' href='user_profile.php?user=" . $ersteller . "'>" . $ersteller . "</a> am " . $erstellungsdatum . " um ". 
						$erstellungszeit . " Uhr</td>
						<td width='20%'>Beiträge:</td>
						</tr>";
				}
			}
			echo "</table></div><br>";	

	
}
?>

Wenn ich jetzt als titel aus der Datenbank ein Sonderzeichen bekommen wird zwar der Titel richtig dargestellt, aber in der Beschreibung ist auch ein Sonderzeichen, welches nur mit einem Fragezeichen belegt wird. Das ist mein Problem
 
Zuletzt bearbeitet:
Zurück