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

Ten artykuł ma ponad 5 lat. Jego zawartość może być nieaktualna.

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=... >