我来到这里寻找通过useragent嗅探iOS 6的答案,并在这里找到了一个很好的答案:How to detect iOS 6 and all minor versions by user agent?
我之前使用的所有正则表达式都非常简单,而且我正试图让这个正常工作.不幸的是PHP解析器没有给我任何错误!
我知道一个事实我做错了,因为我在我的笔记本电脑上运行firefox时得到了下面代码的匹配.
如果有人能指出我在正确的方向,我会很感激,我无法弄清楚我做错了什么.
$subject = $_SERVER['HTTP_USER_AGENT'];
$pattern = '~^(?:(?:(?:Mozilla/d.ds*()+|Mobiles*Safaris*d+.d+(.d+)?s*)(?:iPhone(?:s+Simulator)?|iPad|iPod);s*(?:U;s*)?(?:[a-z]+(?:-[a-z]+)?;s*)?CPUs* (?:iPhones*)?(?:OSs*d+d+(?:d+)?s*)?(?:like|comme)s*Macs*O?S?s*X(?:;s*[a-z]+(?:-[a-z]+)?)?)s*)?(?:AppleWebKit/d+(?:.d+(?:.d+)?|s*+)?s*)?(?:(KHTML,s*(?:like|comme)s*Geckos*)s*)?(?:Version/d+.d+(?:.d+)?s*)?(?:Mobile/w+s*)?(?:Safari/d+.d+(.d+)?)?.*$~';
if (preg_match($pattern,$subject))
{
echo "match";
}
解决方法:
试试这个:
^(?:(?:(?:Mozilla/d.ds*()+|Mobiles*Safaris*d+.d+(.d+)?s*)(?:iPhone(?:s+Simulator)?|iPad|iPod);s*(?:U;s*)?(?:[a-z]+(?:-[a-z]+)?;s*)?CPUs*(?:iPhones*)?(?:OSs*d+_d+(?:_d+)?s*)?(?:like|comme)s*Macs*O?S?s*X(?:;s*[a-z]+(?:-[a-z]+)?)?)s*)?(?:AppleWebKit/d+(?:.d+(?:.d+)?|s*+)?s*)?(?:(KHTML,s*(?:like|comme)s*Geckos*)s*)?(?:Version/d+.d+(?:.d+)?s*)?(?:Mobile/w+s*)?(?:Safari/d+.d+(.d+)?.*)?$
演示:http://gskinner.com/RegExr/?32eou
更通用的解决方案:http://code.google.com/p/php-mobile-detect/
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!