您好,欢迎访问一九零五行业门户网

过路的牛牛们,帮小菜看下这段代码吧

想通过取得ua中的语言编码信息实现跳转,功能:如果ua包含非zh-cn的编码,跳转之,未设置语言信息的不跳转,
不是程序,自己查函数下午搞到现在还没实验成功,条件加循环就晕了,输出一堆no搞不定,大牛小牛帮帮忙,多谢啦!
$ua = $_server['http_user_agent']; $lang = array(af-za,sq-al,ar-dz,ar-bh,ar-eg,ar-iq,ar-jo,ar-kw,ar-lb,ar-ly,ar-ma,ar-om,ar-qa,ar-sa,ar-sy,ar-tn,ar-ae,ar-ye,hy-am,az azeriaz-az-cyrl,az-az-latn azeri,eu-es,be-by,bg-bg,ca-es,zh-hk,zh-mo,zh-cn,zh-chs,zh-sg,zh-tw,zh-cht,hr-hr,cs-cz,da-dk,div-mv,nl-be,nl-nl,en-au,en-bz,en-ca,en-cb,en-ie,en-jm,en-nz,en-ph,en-za,en-tt,en-gb,en-us,en-zw,et-ee,fo-fo,fa-ir,fi-fi,fr-be,fr-ca,fr-fr,fr-lu,fr-mc,fr-ch,gl-es,ka-ge,de-at,de-de,de-li,de-lu,de-ch,el-gr,gu-in,he-il,hi-in,hu-hu,is-is,id-id,it-it,it-ch,ja-jp,kn-in,kk-kz,kok-in,ko-kr,ky-kz,lv-lv,lt-lt,mk-mk,ms-bn,ms-my,mr-in,mn-mn,nb-no,nn-no,pl-pl,pt-br,pt-pt,pa-in,ro-ro,ru-ru,sa-in,sr-sp-cyrl,sr-sp-latn,sk-sk,sl-si,es-ar,es-bo,es-cl,es-co,es-cr,es-do,es-ec,es-sv,es-gt,es-hn,es-mx,es-ni,es-pa,es-py,es-pe,es-pr,es-es,es-uy,es-ve,sw-ke,sv-fi,sv-se,syr-sy,ta-in,tt-ru,te-in,th-th,tr-tr,uk-ua,ur-pk,uz-uz-cyrl,uz-uz-latn,vi-vn);for($i=0;$i<136;$i++){if(is_numeric(stripos($ua,$lang[$i])) == false){ echo no;}else{ echo yes;}}
回复讨论(解决方案) in_array 不是更好吗?
需求是中文不跳转,非中文跳转吗?
获取客户端浏览器使用的语言应该是从$_server[http_accept_language]中截取的。
举个栗子
if (preg_match(/zh/i, substr($_server['http_accept_language'], 0, 4))) { echo 不跳转;}else { echo 跳转;}
语言信息在 http_accept_language 中而不是 http_user_agent
http_accept_language 实际是客户端操作系统默认字符集的反映,与用户用什么字符集浏览你的网页无关
谁告诉你说中文浏览器就不能观看纯英文的网站?
首先http_accept_language已经提到了
其次,需求是非zh的编码跳转,你大可不必将所有的可能都列出来,用stripos判定一次即可
最后遍历数组可以试试foreach
拜谢各位!!!
继续折腾先
谢谢各位牛牛,实验了好久,
ua获取和浏览器获取是两个思路
两个都需要做,foreach很好用
很多ua里确实有语言信息,不是全部,所以还是需要判断所有
其它类似信息

推荐信息