This website will not display properly without JavaScript enabled - Ce site ne peut pas s'afficher correctement sans JavaScript - Strony nie wyświetlą się poprawnie bez JavaScript.

PHP short_open_tag et déclaration XM

Cet article a +5 ans. Son contenu n'est probablement plus d'actualité.

PHP, HyperText Preprocessor, est un langage qui permet d'assembler dynamiquement les pages sur le serveur avant de les servir aux internautes. Pour ceux qui tiennent à la conformité de leurs pages aux standards de W3C, l'utilisation du PHP se heurte parfois aux paramétrages des serveurs qui hébergent les sites.

Le short_open_tag est une commande PHP qui active ou désactive l'utilisation des balises courtes (<? ?>). Si vous voulez utiliser le PHP avec le XML, cette option doit être désactivée. Dès lors, vous devez utiliser la forme longue des balises PHP, soit <?php ?>. Ceci permet au parser de distinguer les balises PHP de la déclaration XML qui, elle, a la forme immuable <?xml ... ?>.

Pour des raisons que je n'ai même pas envie de comprendre, certains hébergeurs de sites (y compris le mien) ne désactivent pas le short_open_tag au niveau serveur et, en même temps, ne vous permettent pas de le faire dans le répertoire de votre site à l'aide de .htaccess.

Conséquence ?
Même si un hébergeur clame soutenir le PHP et le XML, vous ne pourrez pas utiliser correctement les deux en même temps car le parser bute sur l'obligatoire déclaration XML (<?xml ... ?>) dès la première ligne du code de chaque page. En effet, avec l'option short_open_tag activée, le parser ne comprend pas les lettres "xml" qui suivent <?, et abandonne sa tâche. Vous auriez le droit à un message d'erreur suivi d'une page blanche...

Si vous comptez utiliser le XML et le PHP, renseignez-vous préalablement auprès de votre futur hébergeur s'il vous laisse la possibilité de désactiver le short_open_tag à l'aide de .htaccess...

Si vous programmez en XHTML Strict et en UTF-8 ou UTF-16, vous pouvez renoncer à la ligne de déclaration XML. Elle sera sous-entendue grâce à la présence de la balise :

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang=... >