Gjest Slettet+6132 Skrevet 21. mai 2005 Del Skrevet 21. mai 2005 (endret) Heisann. Satt og leste på XHTML 1.0 og fant ut at det var en liten deklarasjon jeg "manglet" (den er ikke påkrevd for at siden skal validiere) Det som jeg prøver å sette inn er: <?xml version="1.0" encoding="iso-8859-1"?> Men når jeg refresher så får jeg opp en koselig error: Parse error: parse error, unexpected T_STRING in /sesnurert/index.php on line 1 Er det noen måte å få PHP til å ikke reagere på "<?"? EDIT: Et spørsmål til. Hvorfor får jeg "Type: text/html" selv om jeg har "application/xhtml+xml" som type? EDIT 2: PHP v4.3.8 / Apache v1.3.31 Endret 21. mai 2005 av Slettet+6132 Lenke til kommentar
Loomy Skrevet 21. mai 2005 Del Skrevet 21. mai 2005 Sett inn denne PHP-koden istedenfor kun selve XML-deklarasjonen: <?php echo '<?xml version="1.0" encoding="iso-8859-1"?>'; ?> Hvorfor får jeg "Type: text/html" selv om jeg har "application/xhtml+xml" som type?Vanskelig å si uten å se scriptet som bestemmer hvilken type som skal sendes. Lenke til kommentar
Gjest Slettet+6132 Skrevet 21. mai 2005 Del Skrevet 21. mai 2005 Takk, den første funka. Hvorfor tenkte jeg ikke på det selv? Her er det som blir sendt ut til browseren: <?xml version="1.0" encoding="iso-8859-1"?> <!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" lang="en" xml:lang="en"> <head> <title>eRik Web</title> <link rel="stylesheet" href="style.css" type="text/css" /> <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=iso-8859-1" /> <meta name="description" content="eRiks homepage" /> <meta name="keywords" content="eRik, ex0n, data, computer, linux, homepage, server, PC" /> <meta name="copyright" content="All your base are belongs to ME! :)" /> </head> Du kan jo se selv Lenke til kommentar
Loomy Skrevet 21. mai 2005 Del Skrevet 21. mai 2005 (endret) Hmm.. La faktisk merke til det samme på min egen side nå. Se vedlegg. Kanskje serveren sender med en default header? *eksperimentere* Endret 21. mai 2005 av Loomy Lenke til kommentar
Gjest Slettet+6132 Skrevet 21. mai 2005 Del Skrevet 21. mai 2005 (endret) Hmm.. La faktisk merke til det samme på min egen side nå. Se vedlegg. Kanskje serveren sender med en default header? *eksperimentere* phpinfo() gir meg "default_mimetype text/html" hvertfall. Endret 21. mai 2005 av Slettet+6132 Lenke til kommentar
Loomy Skrevet 21. mai 2005 Del Skrevet 21. mai 2005 Aha, nå fant jeg en løsning. Lemp inn følgende øverst: $accept = $_SERVER['HTTP_ACCEPT']; if(stristr($accept,'application/xhtml+xml')) { header('Content-type: application/xhtml+xml'); } Da fikk jeg i hvert fall riktig content-type over alt Lenke til kommentar
Gjest Slettet+6132 Skrevet 21. mai 2005 Del Skrevet 21. mai 2005 Aha, nå fant jeg en løsning. Lemp inn følgende øverst: $accept = $_SERVER['HTTP_ACCEPT']; if(stristr($accept,'application/xhtml+xml')) { header('Content-type: application/xhtml+xml'); } Da fikk jeg i hvert fall riktig content-type over alt Såpass ja Takk skal du ha, burde nesten visst det selv egentlig Lenke til kommentar
dabear Skrevet 21. mai 2005 Del Skrevet 21. mai 2005 Jeg pleier som regel å gjøre det slik: <?php $charset = 'iso-8859-1'; $mime = (strpos($_SERVER['HTTP_ACCEPT'],'application/xhtml+xml') !== false) ? 'application/xhtml+xml' : 'text/html'; header('Content-Type:' . $mime . ';charset=' . $charset); if($mime == 'application/xhtml+xml'){echo '<?xml version="1.0" encoding="' . $charset . '"?>';} ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="no" lang="no"> <head> Lenke til kommentar
Lokaltog Skrevet 21. mai 2005 Del Skrevet 21. mai 2005 Og jeg foretrekker dette scriptet, som er bombesikkert. <?php $charset = "iso-8859-1"; $mime = "text/html"; $declaration = '<?xml version="1.0" encoding="' . strtoupper($charset) . '"?>'."\r\n"; $fetch = apache_request_headers(); function fix_code($buffer) { return str_replace(" />", "/>", $buffer); } if(eregi('MSIE[ \/]([0-9\.]+)', $fetch['User-Agent'])) { if(!stristr($fetch['User-Agent'], 'Opera')) { $declaration = ""; } } if(stristr($fetch['Accept'], "application/xhtml+xml")) { if(preg_match("/application\/xhtml\+xml;q=0(\.[1-9]+)/i", $fetch['Accept'], $matches)) { $xhtml_q = $matches[1]; if(preg_match("/text\/html;q=0(\.[1-9]+)/i", $fetch['Accept'], $matches)) { $html_q = $matches[1]; if($xhtml_q >= $html_q) { $mime = "application/xhtml+xml"; } } } else { $mime = "application/xhtml+xml"; } } if($mime == "application/xhtml+xml") { ob_start("fix_code"); } header("Content-Type: $mime; charset=$charset"); header("Vary: Accept"); echo $declaration; ?> Lenke til kommentar
Cucum(r) Skrevet 22. mai 2005 Del Skrevet 22. mai 2005 ...og jeg gikk tilbake til HTML 4.01 fordi jeg ble drittlei av CNT (Content Neogation Techniques), som den Lokaltog postet over, eller det jeg brukte på misinterpreted.org før. Grunnen til at du ikke fikk sendt korrekt MIME-type tidligere, er at MIME-typen på et XML/XHTML-dokument må sendes før all annen output. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå