Pear :: HTTP 1.4.1 имеет метод stringgotiateMimeType (массив $ поддерживается, строка $ default)
<?php
require 'HTTP.php';
foreach(
array(
'text/*;q=0.3, text/html;q=0.7, text/html;level=1, text/html;level=2;q=0.4, */*;q=0.5',
'text/*;q=0.3, text/html;q=0.8, application/xhtml+xml;q=0.7, */*;q=0.2',
'text/*;q=0.3, text/html;q=0.7, */*;q=0.8',
'text/*, application/xhtml+xml',
'text/html, application/xhtml+xml'
) as $testheader) {
$_SERVER['HTTP_ACCEPT'] = $testheader;
$http = new HTTP;
echo $testheader, ' -> ',
$http->negotiateMimeType( array('application/xhtml+xml', 'text/html'), 'application/xhtml+xml'),
"\n";
}
печать
text/*;q=0.3, text/html;q=0.7, text/html;level=1, text/html;level=2;q=0.4, <em>/</em>;q=0.5 -> <b>application/xhtml+xml</b>
text/*;q=0.3, text/html;q=0.8, application/xhtml+xml;q=0.7, */*;q=0.2 -> <b>text/html</b>
text/*;q=0.3, text/html;q=0.7, */*;q=0.8 -> <b>application/xhtml+xml</b>
text/*, application/xhtml+xml -> <b>application/xhtml+xml</b>
text/html, application/xhtml+xml -> <b>text/html</b>
редактировать: это может быть не так хорошо, в конце концов ...
Мой firefox отправляет
Accept: текст / html, application / xhtml + xml, application / xml; q = 0,9, / ; q = 0,8
text / html и application / xhtml + xml имеют q = 1.0, но PEAR :: HTTP (afaik) не позволяет
вам выбрать, какой вы предпочитаете, он возвращает text / html независимо от того, что вы передаете как $ поддерживается. Это может или не может быть достаточно для вас. см. мой другой ответ (ы).