Pear::HTTP 1.4.1 有一个方法string negotiateMimeType( array $supported, string $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, /;q= 0.5 -> 应用程序/xhtml+xml
text/*;q=0.3, text/html;q=0.8, application/xhtml+xml;q=0.7, */*;q=0.2 -> text/html
text/*;q=0.3, text/html;q=0.7, */*;q=0.8 -> application/xhtml+xml
文本/*,应用程序/xhtml+xml -> 应用程序/xhtml+xml
text/html, application/xhtml+xml -> text/html
编辑:毕竟这可能不是那么好......
我的 Firefox 发送
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
text/html 和 application/xhtml+xml 有 q=1.0 但 PEAR::HTTP (afaik) 不会让
you 选择你喜欢的那个,无论你传递什么,它都会返回 text/html $支持。这对您来说可能不够,也可能不够。请参阅我的其他答案。