php实现获取及设置用户访问页面语言类


Posted in PHP onSeptember 24, 2014

本文实例讲述了php实现获取及设置用户访问页面语言类,分享给大家供大家参考。具体分析如下:

该实例User Language Class 获取/设置用户访问的页面语言,如果用户没有设置访问语言,则读取Accept-Language。根据用户选择的语言显示对应的页面(英文,简体中文,繁体中文)

UserLang.class.php类文件如下:

<?php 
/** User Language Class 获取/设置用户访问的页面语言,如果用户没有设置访问语言,则读取Accept-Language 
*  Date:  2014-05-26 
*  Author: fdipzone 
*  Ver:  1.0 
* 
*  Func: 
*  public get        获取用户访问语言 
*  public set        设置用户访问语言 
*  private getAcceptLanguage 获取HTTP_ACCEPT_LANGUAGE 
*/ 
 
class UserLang{ // class start 
 
  private $name = 'userlang'; // cookie name 
  private $expire = 2592000; // cookie expire 30 days 
 
 
  /** 初始化 
  * @param String $name  cookie name 
  * @param int  $expire cookie expire 
  */ 
  public function __construct($name='', $expire=null){ 
 
    // 设置cookie name 
    if($name!=''){ 
      $this->name = $name; 
    } 
 
    // 设置cookie expire 
    if(is_numeric($expire) && $expire>0){ 
      $this->expire = intval($expire); 
    } 
  } 
 
  /** 获取用户访问语言 */ 
  public function get(){ 
 
    // 判断用户是否有设置过语言 
    if(isset($_COOKIE[$this->name])){ 
      $lang = $_COOKIE[$this->name]; 
    }else{ 
      $lang = $this->getAcceptLanguage(); 
    } 
    return $lang; 
  } 
 
  /** 设置用户访问语言 
  * @param String $lang 用户访问语言 
  */ 
  public function set($lang=''){ 
 
    $lang = strtolower($lang); 
 
    // 只能是英文,简体中文,繁体中文 
    if(in_array($lang, array('en','sc','tc'))){ 
      setcookie($this->name, $lang, time()+$this->expire); 
    } 
  } 
 
 
  /** 获取HTTP_ACCEPT_LANGUAGE */ 
  private function getAcceptLanguage(){ 
 
    $lang = strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE']); 
 
    if(in_array(substr($lang,0,5), array('zh-tw','zh_hk'))){ 
      $lang = 'tc'; 
    }elseif(in_array(substr($lang,0,5), array('zh-cn','zh-sg'))){ 
      $lang = 'sc'; 
    }else{ 
      $lang = 'en'; 
    } 
 
    return $lang; 
  } 
} // class end 
?>

demo示例程序如下:

<?php 
 
require "UserLang.class.php"; 
 
$obj = new UserLang('sitelang', 3600); 
echo $obj->get().'<br>'; 
?>

希望本文所述对大家PHP程序设计的学习有所帮助。

PHP 相关文章推荐
php 智能404跳转代码,适合换域名没改变目录的网站
Jun 04 PHP
7个超级实用的PHP代码片段
Jul 11 PHP
解析如何去掉CodeIgniter URL中的index.php
Jun 25 PHP
浅析PHP的ASCII码转换类
Jul 05 PHP
php MessagePack介绍
Oct 06 PHP
PHP简单实现生成txt文件到指定目录的方法
Apr 25 PHP
Yii2 输出xml格式数据的方法
May 03 PHP
Yii2 ActiveRecord多表关联及多表关联搜索的实现
Jun 30 PHP
Laravel重写用户登录简单示例
Oct 08 PHP
PHP判断密码强度的方法详解
May 26 PHP
PHP使用preg_split和explode分割textarea存放内容的方法分析
Jul 03 PHP
PHP各种常见经典算法总结【排序、查找、翻转等】
Aug 05 PHP
php实现的zip文件内容比较类
Sep 24 #PHP
php导出CSV抽象类实例
Sep 24 #PHP
php实现的双向队列类实例
Sep 24 #PHP
php实现的Timer页面运行时间监测类
Sep 24 #PHP
php密码生成类实例
Sep 24 #PHP
PHP中file_get_contents高?用法实例
Sep 24 #PHP
php实现的Cookies操作类实例
Sep 24 #PHP
You might like
php中simplexml_load_string使用实例分享
2014/02/13 PHP
PHP SPL标准库之接口(Interface)详解
2015/05/11 PHP
PHP笛卡尔积实现算法示例
2018/07/30 PHP
用javascript动态调整iframe高度的方法
2007/03/06 Javascript
for 循环性能比较 提高for循环的效率
2009/03/19 Javascript
DOM 中的事件处理介绍
2012/01/18 Javascript
JS.getTextContent(element,preformatted)使用介绍
2013/09/21 Javascript
使用jquery自定义鼠标样式满足个性需求
2013/11/05 Javascript
js实现仿阿里巴巴城市选择框效果实例
2015/06/24 Javascript
AngularJs  unit-testing(单元测试)详解
2016/09/02 Javascript
jQuery+正则+文本框只能输入数字的实现方法
2016/10/07 Javascript
jQuery插件版本冲突的处理方法分析
2017/01/16 Javascript
sublime text配置node.js调试(图文教程)
2017/11/23 Javascript
JS实现可视化文件上传
2018/09/08 Javascript
解决vue A对象赋值给B对象,修改B属性会影响到A的问题
2018/09/25 Javascript
Nuxt.js nuxt-link与router-link的区别说明
2020/11/06 Javascript
nestjs返回给前端数据格式的封装实现
2021/02/22 Javascript
Python实现批量下载图片的方法
2015/07/08 Python
Python实现向服务器请求压缩数据及解压缩数据的方法示例
2017/06/09 Python
Python 数据可视化pyecharts的使用详解
2019/06/26 Python
Python编写打字训练小程序
2019/09/26 Python
pycharm 设置项目的根目录教程
2020/02/12 Python
pytorch加载自己的图像数据集实例
2020/07/07 Python
python全栈开发语法总结
2020/11/22 Python
深入解析HTML5中的Blob对象的使用
2015/09/08 HTML / CSS
英国领先的家庭时尚品牌:Peacocks
2018/01/11 全球购物
大学旷课检讨书
2014/01/28 职场文书
物理专业大学生职业生涯规划书
2014/02/07 职场文书
铁路工务反思材料
2014/02/07 职场文书
机关出纳岗位职责
2014/04/03 职场文书
如何撰写一封出色的求职信
2014/04/27 职场文书
节能标语大全
2014/06/21 职场文书
反四风个人对照检查材料思想汇报
2014/09/25 职场文书
逃课检讨书怎么写
2015/01/01 职场文书
2015年班组建设工作总结
2015/05/13 职场文书
Redis源码阅读:Redis字符串SDS详解
2021/07/15 Redis