|
|||
XHTML-Webdateien mit PHP includes im Browser darstellen
Hallo,
wenn man normale XHTML-Dateien (also die werden ja durch den Doctype definiert, oder?) schreibt, diese beliebig abspeichert und dann in einem Webbrowser anzeigen läßt, werden die Elemente, Tags, etc. ja interpretiert und ausgegeben. Wenn nun in diesen XHTML-Dateien PHP-Dateien eingebunden werden, z.b. durch INCLUDE oder auch durch allgemeine PHP-Zeilen (d.h. die durch "<?php" eingeleitet und mit "?>" wieder beendet werden), dann stellt ein gängiger Browser, nachdem diese Inhalte ausgewertet wurden auch dies dar. Ich habe nun mal eine richtige XHTML-Datei geschrieben, d.h. ich habe sie unter .xhtml abgespeichert (da ich irgendwo mal gelesen habe, das die browser dann bei Aufruf einer solchen datei ihre xml-parser drüberlaufen lassen und nicht ihre normalen (X)-HTML parser). Wenn ich diese dann im Browser öffne, werden alle html-typischen Elemente angezeigt, aber alles was zwischen den <?php ?> steht, wird einfach überlesen. Wie kann man das abstellen?? (muß man eventuell dem Php-Interpreter sagen, daß er auch *.xhtml - Dateien bei der Interpretation berücksichtigen muß??) |
Sponsored Links |
|
|||
Achso, ganz am Anfang der Datei steht:
Code:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> Speichere ich sie als *.php, dann meckert der php parser rum, da er mit dem "<?xml" nichts anfangen kann. |
Sponsored Links |
|
|||
Du kannst als Dateiendung ohne weiteres .php, .htm, .html verwenden. Der Doctype sorgt schon dafür dass die Datei richtig geparst wird.
von .xhtml als Endung rate ich Dir ab, da nicht alle Browser damit umgehen können. Wenn Du also Seiten mit PHP hast, dann gib denen ruhig auch die Endung .php. <?xml version="1.0" encoding="UTF-8"?> musst Du dann nartürlich weglassen. Im Validator http://validator.w3.org/ kannst Du ja überprüfen ob die Datei xhtml-valid ist. |
|
|||
Die XML Zeile <?xml version="1.0" encoding="UTF-8"?> kannst du natürlich mit PHP ausgeben, soweit ich weiss (korrigiert mich bitte falls ich mich irre ) ist die nur für die Browser, nicht für den Webserver. Also kann man am Anfang der PHP-Datei so etwas schreiben:
<? echo("<?xml version=\"1.0\" encoding =\"UTF-8\"?>"; ?> Und falls du Zugriff auf den Webserver hast (also eigener Server, kein Paket bei einem Provider), kannst du sogar einstellen welche Dateiendungen von php interpretiert werden. |
|
|||
Zitat:
Deshalb ist das nur als echo-Ausgabe möglich. Wenn man möchte, dass die Datei dann vom XHTML-Parser des Browers geparst werden soll, dann kann man das auch per PHP angeben, muß aber den IE und den Netscape 6 draußen halten, da die das nicht können. Da gibt es zum Beispiel dieses Script von toscho, mit dem man das erreichen kann: Code:
<?php function ua_accepts_xhtml() { /* Prüft, ob an den UA XHTML ausgeliefert werden darf. * Gibt TRUE zurück, wenn ja, FALSE, wenn nicht. */ /* In dubio pro HTML. */ $xhtml = FALSE; $check_pattern = '|application/xhtml\+xml(?!\s*;\s*q=0)|'; /* Behauptet der UA, XHTML zu können? */ if (($_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.1') and isset($_SERVER['HTTP_ACCEPT']) and preg_match($check_pattern, $_SERVER['HTTP_ACCEPT'])) { $xhtml = TRUE; } /* Ältere Geckos haben ein paar Crashbugs mit XHTML. */ if(isset($_SERVER['HTTP_USER_AGENT'])) { if(preg_match("|rv\:0.9|", $_SERVER['HTTP_USER_AGENT'])) { $xhtml = FALSE; } } return $xhtml; } /* Anwendung. */ $content_type = ua_accepts_xhtml() ? 'application/xhtml+xml' : 'text/html'; header('Content-Type: ' . $content_type . ';charset=utf-8'); header('Vary: Accept'); ?>
__________________
Grüße, Terry ... die immer noch sporadisch mitliest, auch wenn sie sich wenig zu Wort meldet ... |
|
||||
Zu deine Frage, warum der PHP-Code in der xml Datei überlesen wird:
Dein Server ist so eingestellt, dass er warscheinlich nur bei Dateien mit der Endung .php(3/4) den PHP-Code ausführt. Wenn du jetzt in deiner .xml Datei <?php ... ?> schreibst, weiß der Server nicht, dass das PHP-Code ist, er denkt vielmehr, dass er das schreiben soll, also <?php ... ?> wobei er warscheinlich dann durch die < .. > es als ein Tag oder so ansieht. Umgehen kann man das glaub ich in Html und sicher auch in xml mit <script language="php">..</script> Hab ich noch nie verwendet, aber wozu gibt es sonst diesen Tag?
__________________
Bitte keine PN's - schreibt mir ne anständige Mail oder sprecht mich über Msn / Icq an Milian Wolff | Markdownify | Typogridder |
|
||||
Zitat:
Apache: Kann ich PHP auch auf .html-Dateien anwenden? http://www.php-faq.de/q/q-apache-parsen.html Mario |
Sponsored Links |
|
|||
Danke für dieses Script - Ich habe es eingebaut und getestet... Es funktioniert wunderbar, d.h. das Dokument ist XTHML 1.1 valide (gemäss W3c Validator und SchemaValidator von Schneegans). Ausserdem konnte ich mittels eigener DTD das Target-Module einbinden. Im Mozilla zeigt der Browser an "Standardmodus und Type: application/xhtml+xml" - also wie erwünscht!
Jetzt gibt es noch ein klitzekleines Problem: Der validator der WDG validiert das Dokument immer noch nicht. Er scheint "text/html" als mime-type zu bekommen. Sobald ich in der .htaccess den Mimetyp auf application/xhtml+xml festbinde, ist der Fehler weg. Dafür natürlich wieder der alte IE Bug da (File downloaden, statt anzeigen)... Im Apache-Log meldet sich der wdg-Validator wie folgt: Code:
207.36.201.119 - - [20/Jan/2005:14:34:17 +0100] "GET /feelx/dtd/dtdtest4.php HTTP/1.1" 200 587 "-" "WDG_Validator/1.5.7" __________________________________________________ _ Edit: Habe jetzt im obigen Script folgende Aenderungen für einen Workaround genommen: Code:
/* In dubio pro XHTML. */ $xhtml = TRUE; |
Sponsored Links |
Themen-Optionen | |
Ansicht | |
|
|
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
Nachmal XHTML, PHP, MySQL und UTF-8 | ollo | Serveradministration und serverseitige Scripte | 17 | 26.08.2007 00:15 |
PHP, XHTML und Unicode | Eric | Knowledge Base | 72 | 28.10.2005 13:37 |
PHP Sessions und XHTML | aircooler | (X)HTML | 3 | 14.11.2004 03:06 |
Textdatei über PHP in XHTML einbetten | Porthos | (X)HTML | 2 | 13.11.2004 18:31 |
XHTML und includes | Björn | (X)HTML | 5 | 25.03.2004 12:17 |