Newer versions of this extension fix the bug from the previous note.
Still, if you want to ensure there's no match, you can use the array, as the array will remain empty.
I used this fact in the following technique to ensure good content negotiation between application/xhtml+xml and text/html, since IE sends only "*/*" and thus receives application/xhtml+xml if you use the current sample from the documentation.
<?php
$bestContentType = http_negotiate_content_type(array('application/xhtml+xml', 'text/html'),
$contentTypes);
$contentType = (empty($contentTypes) ? 'text/html' : $bestContentType);
http_send_content_type($contentType);
?>
Note that at the time of writing, Opera accepts text/html with this approach, because it places application/xhtml+xml with a lower qualifier.
http_negotiate_content_type
(PECL pecl_http:0.19.0-1.5.5)
http_negotiate_content_type — Négocie avec le client le type de contenu préféré
Description
string http_negotiate_content_type
( array $supported
[, array &$result
] )
Cette fonction négocie avec le client le type de contenu préféré, basé sur son en-tête Accept. Le quantificateur est reconnu et les types de contenu sans quantificateur sont notés de façon plus élevés.
Liste de paramètres
- supported
-
tableau contenant les types de contenu supportés, sous la forme de valeurs
- result
-
sera rempli avec un tableau contenant les résultats de la négociation
Valeurs de retour
Retourne le type de contenu négocié ou le type de contenu par défaut (i.e. première entrée du tableau) si aucun ne correspond.
Exemples
Exemple #1 Exemple avec http_negotiate_content_type()
<?php
$content_types = array('application/xhtml+xml', 'text/html');
http_send_content_type(http_negotiate_content_type($content_types));
?>
http_negotiate_content_type
Vasil Rangelov
21-Sep-2007 05:18
21-Sep-2007 05:18
Pieter van Beek
03-Jul-2007 09:38
03-Jul-2007 09:38
The documentation says:
Returns the negotiated content type or the default content type (i.e. first array entry) if none match.
It would seem that in fact, this method returns the empty string or NULL if none match.
