Gå til innhold

Hvorfor validerer ikke dette?


Anbefalte innlegg

Hei. Jeg lurer på hva jeg må gjøre får å få dette til å validere.

Ville satt pris på om noen kunne ha hjulpet meg med dette.

 

<!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">
<?php

error_reporting(0);

$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;


?>
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=iso-8859-1" />
<title>hei</title>
</head>

<body>
</body>
</html>

Endret av x-ray-cat
Lenke til kommentar
Videoannonse
Annonse

En liten kommentar der: header(); sendes FØR NOE annet. Dette er ingen begrensning i PHP, men pga HTTPs arkitektur. <?php må være helt først i filen, altså ingen HTML (selv mellomrom lager feil) før den. header må komme før echo, print etc. også.

Lenke til kommentar
Kvifor skal du skrive XHTML 1.0 Strict når du ikkje eingong forstår korleis og kvifor du gjer det?

5742790[/snapback]

Det er php'en som skaper trøbbel. Fjerner jeg skriptet, validerer det. Hvorfor skal jeg ikke skrive xhtml stict 1.0?

Endret av x-ray-cat
Lenke til kommentar
Ok. Takk. Gidder noen å skrive koden i den rekkefølgen det skal være og eller utelate det som ikke skal være der? Så kan det være jeg fortstår det lettere.

5742465[/snapback]

 

<?php
 error_reporting(0);
 $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");
?>

<!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">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=iso-8859-1" />
<title>hei</title>
</head>
<body>
...innhold her...
<?php echo $declaration; ?>  <!-- Flytt denne til der du ønsker at $declaration skal være -->
..innhold her...
</body>
</html>

 

Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...