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)
http_negotiate_content_type — Negociar el tipo de contenido preferido por los clientes
Descripción
string http_negotiate_content_type
( array
$supported
[, array &$result
] )Esta función se encarga de negociar el tipo de contenido preferido por los clientes basado en su cabecera de HTTP Accept. Se reconoce el calificador y los tipos de contenido sin calificador son valorados como los más altos.
Parámetros
-
supported -
Arreglo que contiene como valores los tipos de contenidos soportados
-
result -
Serán llenados con un arreglo que contiene los resultados de la negociación
Valores devueltos
Devuelve el tipo de contenido negociado o el que está por predeterminado (por ejemplo, la primer entrada del arreglo) si ninguno coincide.
Ejemplos
Ejemplo #1 Utilizando http_negotiate_content_type()
<?php
$content_types = array('application/xhtml+xml', 'text/html');
http_send_content_type(http_negotiate_content_type($content_types));
?>
Vasil Rangelov ¶
5 years ago
Pieter van Beek ¶
5 years ago
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.
