Gjest Slettet+6132 Skrevet 21. mai 2005 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
Loomy Skrevet 21. mai 2005 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.
Gjest Slettet+6132 Skrevet 21. mai 2005 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
Loomy Skrevet 21. mai 2005 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
Gjest Slettet+6132 Skrevet 21. mai 2005 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
Loomy Skrevet 21. mai 2005 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
Gjest Slettet+6132 Skrevet 21. mai 2005 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
dabear Skrevet 21. mai 2005 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>
Lokaltog Skrevet 21. mai 2005 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; ?>
Cucum(r) Skrevet 22. mai 2005 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.
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å