Valideringsproblem, php der driller?

Tags:    php

Hej..

Har lidt brug for hjælp, har en meget lille simpel hjemmeside som skal afleveres i morgen, problemet er at den ikke vil validere, og kan ikke forstå fejlen, for den forsvinder hvis jeg fjerner min include af menuen, fejlen peger bare ikke på menuen..

http://validator.w3.org/check?uri=http%3A%2F%2Fjohnny.php-freaks.dk%2Ftuneif%2F&charset=(detect+automatically)&doctype=Inline&group=0

Kan problemet have noget at gøre med at jeg i min top.php laver en return, og så gemmer outputtet fra top php i en variabel, jeg så insætter i min side.

Spørg gerne efter kode.. her er min top.php, fejlen forsvinder hvis jeg ikke includer denne:

Fold kodeboks ind/udKode 


M.v.h. Johnny



3 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
Potential Issues

The following missing or conflicting information caused the validator to perform guesswork prior to validation. If the guess or fallback is incorrect, it may make validation results entirely incoherent. It is highly recommended to check these potential issues, and, if necessary, fix them and re-validate the document.

1.

Warning Byte-Order Mark found in UTF-8 File.

The Unicode Byte-Order Mark (BOM) in UTF-8 encoded files is known to cause problems for some text editors and older browsers. You may want to consider avoiding its use until it is better supported.

^ Top
Validation Output: 2 Errors

1. Error Line 1, Column 0: character "[BOM]" not allowed in prolog.

[BOM][BOM]<?xml version="1.0" encoding="utf-8" ?>


2. Error Line 1, Column 3: XML Parsing Error: Start tag expected, '<' not found.

[BOM][BOM]<?xml version="1.0" encoding="utf-8" ?>

De fleste editors kan gemme filer i flere forskellige tekstkodninger. Du har valgt at bruge UTF-8. Din editor vælger at indsætte et usynligt tegn i starten af hver fil (Byte Order Mark, BOM), som fortæller at filen er UTF-8, og ikke ISO-8859-1, som er din editors standardtekstkodning. Det er der som sådan ikke noget galt i, men da du bruger includes, har du flere filer i en og samme side, og du får derfor ikke kun et, men flere BOMs i det færdige HTML-dokument. Det er en fejl, for der må kun være ét BOM, og det skal være i starten af filen. Løsningen er at indstille din editor til ikke at gemme dette BOM, når den gemmer i UTF-8.

BOM er ikke nødvendig, da følgende kode allerede fortæller at siden er UTF-8:

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

Din editor forstår nok ikke denne kode, så den vil måske ikke kunne se at siden er UTF-8, næste gang du åbner din PHP-fil i din editor, men det vil du kunne indstille i editoren.

Hvordan du foretager indstillingerne i din editor ved jeg ikke, da jeg ikke ved hvilken editor du bruger.

En anden ting som ikke har noget med sagen at gøre:
Det er ikke smart at have <?xml version="1.0" encoding="utf-8" ?> øverst da IE så ikke kan finde ud af at siden er Standard Mode. Da siden er HTML og ikke XHTML (kan ses på Content-Type: text/html), er det <meta> og ikke <?xml> der bruges til at læse tekstkodningen.



Indlæg senest redigeret d. 08.05.2008 22:15 af Bruger #3143
Hej Jesper,

Mange tak for den gode forklaring.

Angående <?xml tagget og html/xhtml, så er det meningen. Er noget jeg lærte for længe siden og med følgende kode:

Fold kodeboks ind/udKode 


Burde der ikke være nogle problemer og har da også testet i IE, dog på det sidste kun IE7 og IE8 beta og så FF2 og FF3 beta. Men mener også den virker fint i IE6, håber jeg da :o

PS: Min editor er gode gamle notepad, kan du give en guide til hvordan jeg slår dette BOM fra?

M.v.h. Johnny



Indlæg senest redigeret d. 08.05.2008 22:19 af Bruger #6080
Notepad kan ikke. Du er nødt til at bruge en anden editor til at gemme uden BOM.

Jeg bruger selv SciTE + et lille hack for at få det til at virke.



t