介绍
PHP 是一种被广泛使用的编程语言,可以作为服务端脚本或者嵌入式 Web 服务器语言使用。随着移动互联网的发展,越来越多的网站提供了适配移动设备的版本,PHP 也需要实现自动识别移动设备的功能,以提供更好的用户体验。
实现
使用 user agent
一种常见的实现方式是使用 user agent
。每个访问网站的浏览器都会发送一个包含相关信息的请求头,其中就包括了当前浏览器的类型及版本等信息。我们可以在 PHP 中获取该头部信息,以此判断当前访问的用户是使用移动设备还是电脑设备。
function is_mobile() {
$user_agent = $_SERVER['HTTP_USER_AGENT'];
$mobile_agent_array = array(
'/iphone/i' => 'iPhone',
'/ipod/i' => 'iPod',
'/ipad/i' => 'iPad',
'/android/i' => 'Android',
'/blackberry/i' => 'BlackBerry',
'/webos/i' => 'Mobile'
);
foreach($mobile_agent_array as $regex => $value) {
if(preg_match($regex, $user_agent)) {
return true;
}
}
return false;
}
以上代码实现了一个简单的函数,通过判断当前用户头部信息中是否包含指定的手机类型,最终返回一个布尔值。调用该函数即可判断当前用户是使用手机设备还是电脑设备。
if(is_mobile()) {
echo "当前用户使用的是移动设备";
} else {
echo "当前用户使用的是电脑设备";
}
使用响应头
另一种常见的实现方式是通过设置响应头部信息来实现。当用户访问站点时,通过 PHP 设置响应头中的 Vary
字段,将当前设备类型设置为参数,后续用户再次访问该站点时,浏览器就会读取该响应头信息,并按照参数不同来缓存不同的页面。例如,当用户访问手机版网站时,响应头可以设置如下:
header('Vary: User-Agent');
header('Content-type: text/html; charset=UTF-8');
if(preg_match('/(iPhone|iPod|iPad|Android|Windows Phone)/', $_SERVER['HTTP_USER_AGENT'])) {
header('Location: http://m.domain.com');
}
以上代码将当前设备类型设置为 User-Agent
,并判断当前访问设备是否是手机,如果是,则返回 http://m.domain.com
手机站点,如果不是,则返回桌面站点。
总结
以上两种实现方式都可以实现自动识别移动设备的功能,但是由于移动设备种类繁多且更新迅速,所以在实际应用中需要根据不同的需求选择合适的方式进行判断。