PHP Inhalt aus Datei includen, wie am besten?

BoDyGuArD

Lt. Junior Grade
Registriert
Feb. 2003
Beiträge
353
Hey,

hätte noch ein Problem. Ich habe einen Index, per Anhang an die "index.php?..." include ich als Content z.B. unterschiedliche Texte an bestimmte Stellen.

Gut, wie mache ich das am besten? Ich habe sagen wir eine Tabelle, 100% Höhe, 100% Weite in der Index.php. Das ist meine Basis für den Content, den ich includen möchte.
Der Content kann aus ganz unterschiedlichen Dingen und Elementen bestehen, Tabellen, Bildern, längeren Texten.

Ich habe hierzu "...php" Dateien erstellt, die einen Unicode header haben (ansonsten statt Umlauten nur Zeichensalat!).

Hier mal meine "Schablone" der Dateien, die ich per include in die Tabelle im Index einbinde:

HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<meta content="de" http-equiv="Content-Language">
</head>

<body style="margin: 0">

<table style="width: 100%">
	<tr>
		<td class="text" style="width: 90%">[...]</td>
		<td style="width: 10%">[...]</td>
	</tr>
</table>

</body>

</html>

Ist das schon falsch?! Oder kann mans so machen? Wie funktioniert es richtig (UNICODE!!)?!

Vielen Dank für Vorschläge!
 
Das, was du via include in Datei A einbindest, ist nur das fehlende Stück, was in Datei A fehlt. Sonst nichts.

Beispiel, datei_a.php:
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

 <head>
  <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  <meta content="de" http-equiv="Content-Language">
 </head>

 <body style="margin: 0">

 <?php include("datei_b.php"); ?>

datei_b.php:
HTML:
  <table style="width: 100%">
   <tr>
    <td class="text" style="width: 90%">[...]</td>
    <td style="width: 10%">[...]</td>
   </tr>
  </table>

 </body>

</html>
Beim Aufrunf von datei_a.php bekommst du im Browser genau den Code, den du oben gepostet hast.
 
Zuletzt bearbeitet:
Aber wenn ich das mache wie du schreibst, habe ich in der Datei welche ich include KEIN Unicode!
 
Meinst du utf-8? Wenn datei_b in utf-8 codiert ist, hast du da auch utf-8, ansonsten nicht. Das File wird so eingelesen wie es ist.
 
Wenn nicht sichergestellt werden kann, dass die "includete" Datei auch in UTF ist, so kann man den Inhalt mittels "eval()" auch erst an ne Variable binden und dann diese nach UTF8 konvertieren.

Bilder brauchst du aber ohnehin nicht includen...du brauchst (und solltest) nur den HTML-Code dafür einbinden.
 
Ich verstehe es nicht. Die index.php hat folgendes im head:

HTML:
<head>
<meta content="de" http-equiv="Content-Language" />
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
</head>

Wenn ich jetzt eine .php Datei include die so aussieht

HTML:
<table style="width: 100%">
	<tr>
		<td class="text" style="width: 90%">
		Über uns</td>		
		<td style="width: 10%"></td>
	</tr>
</table>

kommt folgendes dabei raus: "�ber uns"

Wieso zum Geier ist das so?!
 
Weil die zweite Datei sehr wahrscheinlich in ANSI codiert ist, statt utf-8

oder


weil der Server im HTTP-Header einen anderen Content-Type ausgiebt.




Ansicht/Zeichenkodierung im Firefox zeigt was an?
 
Ansicht -> Zeichencodierung im Firefox zeigt "Unicode (UTF-8)" an.

Wenn ich in die zu includende Datei folgendes einfüge, funktioniert alles wie es soll:

HTML:
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
</head>

Kann mir aber nicht vorstellen, dass das richtig ist?!
 
Versuch's mal mit Übersetzung der dt. Umlaute & Sonderzeichen in deinem Text gemäß dieser Zeichentabelle
Kann den Code hier leider nicht posten, da er durch die Board-SW gleich interpretiert wird...
 
Gesamt möchte ich das ganze nicht posten. Ich poste mal die relevanten Dinge:

Index.php:
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta content="de" http-equiv="Content-Language" />
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>ABC</title>
<link href="style.css" rel="stylesheet" type="text/css"/>
</head>

<body style="margin: 0; background-color: #FFFFFF;">

[...]

<table class="content_table" cellpadding="0" cellspacing="0" style="width: 100%; height: 100%">
<tr>
	<td class="content">
		<p class="text">
		<?php
			if (is_file("content/" . $content . ".php"))
				include("content/" . $content . ".php");
		?>
		</p>
	</td>
</tr>
</table>

[...]

</body>

</html>

Include-Bsp:
HTML:
<table style="width: 100%">
	<tr>
		<td class="text" style="width: 90%">
			Test 123
		</td>
		<td style="width: 10%"></td>
	</tr>
</table>

Verstehe absolut nicht, wo das Problem liegen könnte.. :(

Danke für die Mühe!
Ergänzung ()

User007 schrieb:
Versuch's mal mit Übersetzung der dt. Umlaute & Sonderzeichen in deinem Text gemäß dieser Zeichentabelle
Kann den Code hier leider nicht posten, da er durch die Board-SW gleich interpretiert wird...
Danke für den Tip aber ich werde nicht Seitenweise Text per Hand so umfriemeln! Es muss definitiv auch anders gehen!
 
BoDyGuArD schrieb:
Es muss definitiv auch anders gehen!
Geht's auch!
Besorg dir Notepad++. Dort kannst du über die Funktion Ersetzen im Menü Suchen die notwendigen Änderungen automatisch entweder pro Datei oder für mehrere Dateien gleichzeitig durchführen lassen (und dann sogar in UTF-8 ohne BOM speichern) ;-)
Geht (natürlich) wohl auch mit anderen Editoren...
 
User007 schrieb:
Versuch's mal mit Übersetzung der dt. Umlaute & Sonderzeichen in deinem Text gemäß dieser Zeichentabelle
Kann den Code hier leider nicht posten, da er durch die Board-SW gleich interpretiert wird...


Das ist zwar ein Workaround, behebt aber nicht das Charset-Problem.


Bist du dir 100%ig sicher dass die includete Datei utf-8 ist? Was passiert, wenn du beide Dateien in Notepad++ aufmachst? Werden beide Dateien als utf-8 erkannt (oder zumindest die, die die Umlaute enthält)?


Wenn du es schaffst, ein Beispiel, wo dieses Problem auftritt auf einem Webspace zu veröffentlichen kann ich mir das ganze genauer anschauen.


Ansonsten komprimiere bitte beide Beispiele mit Umlauten (!) als zip file und hänge sie als Attachment im Forum an (das reine Text-Posting nützt hier leider weniger).
 
Na wie stelle ich das bei der include datei ein?! Wenn ich in meinem HTML-Editor UTF-8 einstelle, dann wird automatisch

HTML:
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
</head>

eingefügt. Dann geht es zwar, scheint mir aber nicht richtig zu sein!
 
luky37 schrieb:
Das ist zwar ein Workaround, behebt aber nicht das Charset-Problem.
Ist ja nur der erste Schritt zur Lösung, dann weiter, wie in meinem zweiten Post...

BoDyGuArD schrieb:
Wenn ich in meinem HTML-Editor UTF-8 einstelle, dann wird automatisch

HTML:
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
</head>

eingefügt.
Ich glaub', du unterliegst hier einem Gedankenfehler: diese Angabe im <head> teilt dem Browser mit, mithilfe welchen Charsets er den Quelltext interpretieren soll - unabhängig davon kann die Zeichenverwendung innerhalb des Quelltextes sein...
Es gibt, sozusagen mehrere Stationen, wo der Charset eingestellt werden kann - der Server (z.B. per .htaccess), das HTML-Dokument (z.B. per header() in PHP oder <meta>-Tag), das Speicherformat des Dokuments sowie im Browser.
 
sowohl die htaccess Methode wie auch die php Funktion header() führen zum selben Ergebniss, nämlich das im HTTP (nicht HTML!) Header das Charset gesetzt wird (wenn richtig angewandt natürlich).


@BoDyGuArD: Dann besorge dir einen richtigen Editor, wie z.b. Notepad++. Wie gesagt, am besten du stellst uns die 2 Files in einem zip archiv hier zur Verfügung, dann sehen wir gleich was los ist.
 
Mit richtigem editor (Notepad++) klappt nun alles, außerdem hatte ich einen <p>-tag um den include-befehl stehen, deshalb waren jegliche Abstände verzogen.. ;)

Vielen Dank für die Hilfe!
 
ich habe in datei_a folgendes im header stehen:

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

wenn das drinn steht und man andere dateien included, werden die zeichen richtig dargestellt (also auch die umlaute)....mit utf-8 an der stelle hatte ich nämlich auch probleme.
 
@iGDark: tja, dann war dein File aber auch nicht in utf-8 kodiert sondern in latin1!
 
Zurück
Oben