Archive for 12月, 2008

首先我想说明我本文阐述的是纯粹从美学的角度来写出代码,而非技术、逻辑等。以下为写出漂亮代码的七种方法:
1, 尽快结束 if语句
例如下面这个JavaScript语句,看起来就很恐怖:

1
2
3
4
5
6
7
8
9
10
11
12
13
function findShape(flags, point, attribute, list) {
if(!findShapePoints(flags, point, attribute)) {
if(!doFindShapePoints(flags, point, attribute)) {
if(!findInShape(flags, point, attribute)) {
if(!findFromGuide(flags,point) {
[...]

今天被json编码中文搞死了。。。
json_encode中文的时候,会把每个中文字符encode成“\uxxxx”
而存进数据库的时候,“\”被屏蔽了,直接变成”uxxxx”
郁闷,我还以为是json_decode的问题。。。在网上查了一个下午资料都没解决
直到发现网上的文章都说json_encode是把中文encode成“\uxxxx”,我才顿悟。。。
经过一番实验,才发现问题出在存储到数据库的环节。。。
特此纪念一下
至于解决办法,当然是让”\”保留啦,把”\” replace成”\\”就可以啦~
还有一个问题,差点忘了,就是json_decode以后返回的不是array,而是stdclass,有一个很郁闷的问题,如果hash带下划线,如json['xx_yy']会出现很奇怪的问题,页面什么都不显示,也不报错,差点晕死。有一个办法解决,就是先foreach一下,把带下划线的存到一个array里面,或者直接整个转存成array。
//感谢软工的回复
由于已经是2年前写的博客,也没有写实际场景,我已经忘记json_decode是在什么场景下出现的问题。
如果我没有记错的话,当时json_decode还没有第二个参数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function get_ip()
{
$ipaddr = "Unknown";
if ($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"]) {
$ipaddr = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"];
} elseif ($HTTP_SERVER_VARS["HTTP_CLIENT_IP"]) {
$ipaddr = $HTTP_SERVER_VARS["HTTP_CLIENT_IP"];
} elseif ($HTTP_SERVER_VARS["REMOTE_ADDR"]) {
$ipaddr = $HTTP_SERVER_VARS["REMOTE_ADDR"];
} elseif (getenv("HTTP_X_FORWARDED_FOR")) {
$ipaddr = getenv("HTTP_X_FORWARDED_FOR");
} elseif (getenv("HTTP_CLIENT_IP")) {
$ipaddr = getenv("HTTP_CLIENT_IP");
} elseif (getenv("REMOTE_ADDR")) {
$ipaddr = getenv("REMOTE_ADDR");
}
return $ipaddr;
}


关于博主

姓名:郑玏

性别:男

职业:IT工程师

爱好:KTV、乒乓球、台球、五子棋、围棋、编程

语言:中文、英语、闽南语

Email:

  • miki77: 一直都是用您的漫画下载器!觉得非常非常好用!!!加油!!谢谢!!! [...]
  • hzui: 希望站点包快出啊,现在就等这个了。 [...]
  • K_mol: 啊 大神 问一下 以后哪里下站点包呢 [...]
  • vamshu: 非常感谢楼主,以前一直都用博主的软件来下载漫画. [...]
  • blueink: 年前一直没空下漫画,快三个月没看了,多谢博主 [...]