1. 论坛系统升级为Xenforo,欢迎大家测试!
    排除公告

PHP 中檢測瀏覽器語言環境的函數是什么?

本帖由 不学无术2009-02-24 发布。版面名称:后端开发

  1. 不学无术

    不学无术 Ulysses 的元神

    注册:
    2005-08-31
    帖子:
    16,714
    赞:
    39
    一般瀏覽器都設置了默認的語言,PHP 中,服務器端如何獲取客戶端的語言設置呢?是下面這個變量嗎?

    $_SERVER['HTTP_ACCEPT_LANGUAGE']

    請指點一下。

    謝謝!
     
  2. qlq

    qlq Active Member

    注册:
    2006-04-20
    帖子:
    2,658
    赞:
    1
    <?php
    山丹丹那个开花幺........哦 红艳艳....?>
     
  3. 不学无术

    不学无术 Ulysses 的元神

    注册:
    2005-08-31
    帖子:
    16,714
    赞:
    39
    你,可以下地獄了。
     
  4. 平平

    平平 New Member

    注册:
    2006-11-23
    帖子:
    640
    赞:
    0
    $_SERVER["HTTP_ACCEPT_LANGUAGE"]
    是一个变量不是函数,再具体点就是个超级全局变量
    确实可以取得浏览器发送的头信息里的语言信息

    例如最简单的直接显示这个变量

    PHP:
    <?php
    echo $_SERVER["HTTP_ACCEPT_LANGUAGE"];
    ?>
    不同的客户浏览器设置显示的信息是不同的。要用这东西后面必须用strpos()来查找第一个值,或者用正则处理

    俺水平有限哪里说错了,就包涵下。:ft:
     
  5. 不学无术

    不学无术 Ulysses 的元神

    注册:
    2005-08-31
    帖子:
    16,714
    赞:
    39
    謝謝 平平 指點。

    我想讓 UCenter Home 可以切換語言,可是弄了兩天就是不成功。

    修改了語言文件的調用,沒有效果,不知道什么原因。
     
  6. 平平

    平平 New Member

    注册:
    2006-11-23
    帖子:
    640
    赞:
    0
    要注意大小写啊 IE7,要是设置了简体中文是zh-CN后面的CN是大写 美国英语是en-US后面US大写
    但是firefox都是小写。
    最简单就是用strtolower()把其变成全部小写,这样方便

    顺便写个条件判断的例子
    PHP:
    <?php
    if(!(strpos(strtolower($_SERVER["HTTP_ACCEPT_LANGUAGE"]),'zh-cn')===false)) $lang 'Chinese';
    else 
    $lang $_SERVER["HTTP_ACCEPT_LANGUAGE"]; 
    echo 
    "$lang";
    ?>
    可以比较下没有strtolower()在ie下的区别。
    用了strtolower()这样不管是ie还是firefox都可以用来判断了。
    要实现不同语言的页面跳转用个switch分支还有break子句组合就ok
    当然strpos()不适合浏览器设置了多个语言的,查找的字符串是只要出现就匹配的
    正则懒得写了,要是没有对症下药,不要埋怨啦,不学是牛人,也不敢胡乱在您面前班门弄斧:redface:
     
  7. 不学无术

    不学无术 Ulysses 的元神

    注册:
    2005-08-31
    帖子:
    16,714
    赞:
    39
    测试阶段,我还没有正式使用这个变量。

    我是直接修改了 UCH 的代码,但是不起作用,不知道怎么回事。

    毕竟对 PHP 不是很了解,对 UCH 的代码也不了解。

    因为需要,所以想试试看。
     
  8. lifei913

    lifei913 New Member

    注册:
    2009-02-12
    帖子:
    237
    赞:
    0
    呵呵呵