web-dev-qa-db-fra.com

PHP Inclure les balises META

Un site Web sur lequel je travaille actuellement est http://www.troubi.com . S'il vous plaît ne vous souciez pas de regarder le code source.

Si je valide le site Web via w3cValidator, de nombreuses erreurs se produisent, toutes dues à des balises méta "non valides". ( http://validator.w3.org/check?uri=http%3a%2f%2fwww%2etroubi%2ecom%2f )

Si vous regardez la source du site Web, vous verrez que tout dans la méta-région a l'air parfaitement valide, et c'est la curiosité.

Maintenant vient le point, dans Firebug, il semble juste que toutes les balises méta incluses soient simplement déplacées vers le <body>! Une capture d'écran de Firebug: enter image description here

Pour référence, ceci est le méta-fichier qui est inclus: http://www.troubi.com/feature/meta.php

3
Michael

Le problème est que vous avez un caractère caché entre le <head> et le premier <meta> élément. Assurez-vous que toutes vos pages et vos fichiers PHP ont le bon codage UTF-8 (vous pouvez les convertir en Notepad ++ ou Sublime Text si vous avez ces applications).

Edit: vient de tester et c'est le caractère 'ZERO WIDTH NO-BREAK SPACE' (U + FEFF)

3
DisgruntledGoat

Il se passe des choses étranges là-dedans. J'ai juste essayé de valider sans

<!doctype html>
<html itemscope itemtype="http://schema.org/Organization">
<head>
<meta charset="utf-8">

Ensuite, je les ai ajoutés un à un dans le code et celui-ci est validé comme il se doit. Commencez par <!doctype html> puis <html> -> <head> -> <meta charset="utf-8">. Il devrait ensuite valider avec des erreurs sur itemscope. Ajoutez itemscope itemtype="http://schema.org/Organization" à la balise <html>.

Est-ce que ça valide par la suite?

À propos de Firebug, vous ne pouvez pas vraiment lui faire confiance à 100%.

@pritaeas - html5 n'a pas besoin de balises fermantes sur des balises telles que <meta> <img> et ainsi de suite.

2
Hoshts

Ok, je l'ai compris. Le problème était dans <meta charset=utf-8 >. Le problème était que cela ressemblait à des caractères normaux ASCII, mais ils ne l'étaient pas. C'étaient des symboles Unicode très cryptiques qui se ressemblaient. Je vais ajouter ceci à ma liste hahaha, amazing bug. Résolu en recréant complètement le fichier inclus.

Merci de votre aide!

1
Michael