文章标签 ‘有趣的学习’

PHP程序国际化小记[i18n]

2011.08.11 | 天气: | 标签: , , , , , , ,

Linux上的国际化基本都是由gettext来完成的,配合这.po.mo的使用,可以说是相当方便,PHP程序的国际化我还是第一次做,这里有篇文章讲得非常不错,我这就不存档了。
这里讲下我自己遇到的一些问题:

不能加载.mo文件

明明写好了.mo,路径也正确,却怎么也加载不上来。
得检查两个地方:

  • 主机是否支持这个翻译语言

    像我写程序和测试用的Ubuntu执行了locale -a后,只有寥寥几种en_US.utf8 zh_CN.utf8 zh_SG.utf8
    而在东哥的主机上测试的时候竟然有191种!而且细心的你可能注意到了,我的Ubuntu上只有两种中文:一个是简体zh_CN.utf8,和新马泰地区的zh_SG.utf8;而东哥的主机上有还有HK TW。所以测试的时候发现所有都写好了却不识别,要先看看主机是否支持。p.s.如果没有ssh,可以新开一个php文件,在里面写入
    echo system('locale -a');
    保存后访问即可

  • 编码问题

    编码国内常见的有utf8、gbk、gb2312三种,不过我个人觉得国标码太废柴了,写些别国的文字或者符号就直接趴下了,所以直接用utf8。
    setlocale(LC_ALL, $key.'.utf8');
    把这段代码加到php中,这样启用的语言和编码格式才能正确加载。注意utf8前还有一个点(这个小问题折腾了我至少10分钟才发现)

HTTP_ACCEPT_LANGUAGE读取问题

真心觉得这问题简直坑爹,因为浏览器传上来(即超级变量$_SERVER['HTTP_ACCEPT_LANGUAGE']里的值)的是「zh-cn」这样的格式,而gettext使用的却是「zh_CN」,大小写还不能搞错,还需要蛋疼地转化一下,这里我用了正则的替换
$name = preg_replace('/(\w+)-(\w+)?/e',"'\\1_'.strtoupper('\\2')", $name);
哈哈,聪明的你应该发现了,就算传上来像「zh」这样的函数,这条正则也会聪明地避开,反向引用和//e的使用,想必我不用多说了。

全部的源代码在这里

(@.@-)文字表情版正则入门[1]

2011.05.30 | 天气: | 标签: , ,

以前听说会正则的人都是仰视大神状,因为正则太难学啦;艰难地学了一段时间后,俺发现有些文字表情正好可以匹配正则,所以本文目的就是让不知道正则的同学通过很达意的文字表情开开心心地了解正则表达式从而入门。

首先,正则表达式能干吗呢?最简单的正则可以在外卖单中要找到需要的电话号码,也可以很浪漫地把一般的文件匹配变成情书哦!所以,这么好的东西可不能放着不用嘛。为了验证我说得对不对,大家还需要一个正则工具
(在线的正则工具http://www.gethifi.com/tools/regex

咱们先说好蓝色的文字代表正则表达式,准备好了以后咱们从最简单的开始咯~


  1. 这个正则表达式能匹配所有“囧”字,够简单吧。
    同理,类似=3=(撅嘴)、o_O(疑问)@_@(晕眩)><(紧闭双眼)等简单的表情可以匹配一样的字符,大家可以到上面的正则工具那里实验一下先。玩了一阵后,你可能会问,这个正则和我的文字编辑器的“查找”到底有什么不同,强大在哪了?
  2. (@.@-) 还记得标题上的眼镜哥我吧,我来回答。其实我也是一个简单的正则。我的小句号嘴巴”.”就是一个可以匹配任何字符的神奇字符(道上叫“元字符”)。来见见我的兄弟们吧

    你可能注意到了,这个神奇的小句号可以对应各种字母、数字、符号。我眼镜哥厉害吧!

  3. 阅读全文 »

密码保护:破解简单Mifare射频卡密钥杂记

2011.04.01 | 天气: | 标签: , , , , ,

这是一篇受密码保护的文章。您需要提供访问密码: