php

php 字符串编码问题和转换字符串编码iconv与mb_convert_encoding的区别

星期二, 四月 6th, 2010 | disucz, php | 没有评论

在非纯英文的项目中,编码问题始终存在ing,来之解决之;以前只对java的比较熟悉,项目需要调试对接php接口,也要处理,处理方法大同小异;

问题1:web页面提交,字符串以什么编码处理?

当用浏览器打开某个网页时,该网页的编码一般由标签或header指定。如:

header(“Content-Type: text/html;charset=gb2312”);
则用户在该页面输入的字符将一指定的该编码表示,web提交时也将以该编码提交。

问题2:php如何检查某个字符串的编码?

用mb_detect_encoding($str);函数,使用该函数必须打开php的extension=php_mbstring.dll扩展

1
2
3
4
5
<?php
$str="测试ing";
$cha=mb_detect_encoding($str);
echo $cha;
?>

我在gb2312页面上输的,不过输出的结果是 UTF-8 很奇怪,还没有找到原因。
› Continue reading

Tags: , , ,

2010年发布imgShow的2.0版本兼容Jquery,无需插入代码

星期日, 一月 10th, 2010 | php, wordpress | 12 Comments

今天难得休假一天,也抽个时间把imgShow这个插件更新至2.0版本

新版修正了和jquery不兼容的bug,和使用者的反馈,实现了自动给文章内容的图片实现imgShow的展示功能,此版本继续兼容使用代码的方式;

启用此插件后即可,无需代码的插入,最大减少使用者的操作,完全自动化,感谢大家的意见和支持!

下载地址:imgshow2.0
1.0版本和使用更多信息见:ImgShow图片点击滚轮缩放的wordpress插件(plugins)
下图是新版展示:

图片看不清,可点击查看,支持滚轮缩放….正是本插件实现的功能

ru

Tags: , , , ,

修正imgShow的兼容Jquery版本

星期二, 十二月 8th, 2009 | php, wordpress | 一条评论

自己写的imgShow的图片展示插件,看反馈 zLear 说 “跟jQuery有冲突 激活插件后jQuery的特性就没有了”,看了下,果然有冲突,今天修正个版本,放去去了
具体方式见此插件页,点击这里详解

Tags: , , , ,

Resin4.0安装小记

星期日, 十月 18th, 2009 | JAVA-and-J2EE, linux, php | 2 Comments

Resin出了4.0版本,一直喜欢尝试新东西的直接; 就下载安装了下,安装起来很简单,可以到Resin Download去下载,其实以前在windows中下载过,可惜执行的时候一闪而过,当时没有在意也没有去管他了,今天又在linux下去真正用下了;
1.tar zxvf resin-4.0.1.tar.gz
2.cd resin-4.0.1
3../configure
4.make & make install
5.修改resin.xml的用户组 www-user,给赋予webapps的对应的用户组权限
6../bin resin.sh start 不报错的就可以http://localhost:8080/看到页面了,记得防火墙的8080端口要打开哦

不过可惜的是4.0版本据说不稳定,有人发生宕机事件,还有就是有的在上面运行出错的问题;
再者看resin的主要意图是增加对php的支持,研习resin4.0版本的文档也不是很多
为了稳定还是延续使用ReResin Pro 3.1.9版本
最近会处理一些nginx+resin的处理,还有resin本身的集群功能;nginx+PHP(FastCGI)+mysql已经搭建完毕

Tags: , , , ,

颜色六位码和RGB在线互转查询和计算方式

星期六, 八月 22nd, 2009 | pagemaker, php | 2 Comments

颜色六位码和RGB在线互转查询和计算方式
这是关于颜色的十六进制和十进制相互转换的问题。eg:
#FFFF00->FF,FF,00(RGB)->(255,255,0)->yellow!
额外的色彩转换工作。当然这种速度差异很难察觉,只是理论上的。

RGB是三原色R(red)、G(green)、B(blue)。RGB的所谓“多少”就是指亮度,并使用整数来表示。通常情况下,RGB各有256级亮度,用数字表示为从0、1、2…直到255。
按照计算,256级的RGB色彩总共能组合出约1678万种色彩,即256×256×256=16777216。通常也被简称为1600万色或千万色。也称为24位色(2的24次方)。
CSS颜色代码大全–自己网上的颜色调色板-六位颜色值
这24位色还有一种较为怪异的称呼是8位通道色,为什么这样称呼呢?
› Continue reading

Tags: , ,

ImgShow图片点击滚轮缩放的wordpress插件(plugins)

星期日, 四月 5th, 2009 | php, wordpress | 70 Comments

小记前:这段时间一直忙着基于java的支付平台的设计和对接口的处理,赶在清明节有空整理下这个图片的点击,弄成个小插件吧,希望有需要的也可以直接激活使用,简单多了;
ImgShow图片点击滚轮缩放的wordpress插件(plugins)
官方访问地址:http://wordpress.org/extend/plugins/imgshow/
—-2012-04-18更新至2.1版本——————————-
屈指一算竟然时隔2年, 才再次更新版本,废话少说,此次更新如下就2点,兼容性和一个功能点:
1.支持更多 ie, firefox, chrome, opera, Safari,以前只支持ie和firefox
2.不想使特定图片启用效果该效果的,可以用下面代码阻止(系统默认对所有站点图片生效的)

<!--noimgshow--><img src="pic.jpg" /><!--noimgshow-->

EN:
1.Support for ie, firefox, chrome, opera, Safari
2. Do not want to make the corresponding picture effect is enabled,
you can use to prevent the effect of

<!--noimgshow--><img src="pic.jpg" /><!--noimgshow-->
imgshow2.1下载地址:imgshow2.1

—-2010-04-22更新至2.0.2.2版本—————————-

1.修正点击图片会弹出新窗口,造成本插件不能使用的bug; (No new windows open,the bug is not here)
下载地址:imgshow2.0.2.2

—-2010-04-05更新至2.0.2.1版本—————————-

1.优化加载处理速度
2.修正在一篇文章中多个图片的加载问题
3.增加鼠标移动到图片显示手型的样式
下载地址:imgshow2.0.2.1

== Description ==

Mouse Wheel zoom picture when you onclick it,use sample:

[imgShow:<img src="//www.pomelolee.com/imgshow/showPhoto.jpg" border="0" alt="skag"  width="560"/>]

this is ok
now start download(下载):imgshow1.0

今天难得休假一天,也抽个时间把imgShow这个插件更新至2.0版本

新版修正了和jquery不兼容的bug,和使用者的反馈,实现了自动给文章内容的图片实现imgShow的展示功能,此版本继续兼容使用代码的方式;

启用此插件后即可,无需代码的插入,最大减少使用者的操作,完全自动化,感谢大家的意见和支持!
下载地址:imgshow2.0
1.2010-02-26 modify js Compatibility ;修正由于大小写转换造成的部分js代码失效的bug
2.版本更新至2.0.1版本 version 2.0.1
版本更新至2.0.1修正bug如上:imgshow2.0.1下载

== Installation ==

1. Extract the contents of the archive (zip file)
2. Upload the showphoto folder to your ‘wp-content/plugins’ folder
3. Log in to your WordPress admin and go to the ‘Plugins’ section. You should now see showphoto in the list of available plugins
4. Activate the plugin by clicking the ‘activate’ link
5. Now go to use sample:

[imgShow:<img src="//www.pomelolee.com/imgshow/showPhoto.jpg" border="0" alt="skag"  width="560"/>]

6. More please click link: //www.pomelolee.com/imgshow/
另计:支持ie6,ie7,ff等的鼠标滚轮缩放和鼠标移动功能!

此插件在wp2.8版本或其他中的可视化的编辑中不能正常显示,因插件采用的是代码的格式;请采用在HTML格式下保持的示例模式

example:

图片看不清,可点击查看,支持滚轮缩放….正是本插件实现的功能

skag

Tags: , , , , , , ,

ucenter创始人密码忘记了的解决方法和直接重置密码文件

星期三, 二月 11th, 2009 | php | 没有评论

     今天升级论坛要把ucenter从1.0升级到1.5,密码不记得了,忙活了半天,把密码修改好其他按照官方就一切OK了,修改方法如下,有两种:

①.加密密码直接修改配置文件(uc下面/data/config.inc.php文件)
在里面你可以看到

1
2
define('UC_FOUNDERPW', '9be35ad751b976cb6a42e99196b8182a');
define('UC_FOUNDERSALT', '254654');

你的估计和我的是不一样的,你要是想省事的话,直接把上面两个复制下,把你的文件中的这两行给覆盖掉,密码是:123456,然后自行进入后台在【管理员】 选项中修改密码即可;不闲麻烦的也可以自行加密密码,原理如下:

用php输出下面的一个代码

$ucfounderpw= md5(md5($ucfounderpw).$ucsalt);

其中$ucsalt就是254654(这个根据您的需要而定,实际上是一个随机的六位数字即可)

$ucfounderpw是您要设置的密码。

得到的$ucfounderpw替换

define(‘UC_FOUNDERPW’, ‘9be35ad751b976cb6a42e99196b8182a’);

这个里面的9be35ad751b976cb6a42e99196b8182a就可以了。

②采用下面的文件进行升级式修改

  把文件updatepw.php上传到ucenter的根目录下,在浏览器中运行http://你的域名/uc/updatepw.php,然后填写密码即可;不过要记住的是,用完后要删除updatepw.php 文件,以免造成的后果很严重,呵呵;下载updatepw.php 文件

Tags: ,

IP地址获取真实地址函数,php版本,借助纯真QQWry库

星期一, 十二月 8th, 2008 | php | 没有评论

IP地址获取真实地址函数,php版本

代码和QQWry.dat库(更新至2008-11-05号)的下载:点击下载

php code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
<?php
/*
 * Created on 2008-11-5
 *
 * To change the template for this generated file go to
 * Window - Preferences - PHPeclipse - PHP - Code Templates
 */
 
 
 //===================================
//
// 功能:IP地址获取真实地址函数
// 参数:$ip - IP地址
//
//===================================
function convertip($ip) {
    //IP数据文件路径
    $dat_path = 'ip/QQWry.Dat';
 
    //检查IP地址
   if(!preg_match("/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/", $ip)) {
        return 'IP Address Error';
    }
    //打开IP数据文件
    if(!$fd = @fopen($dat_path, 'rb')){
        return 'IP date file not exists or access denied';
    }
 
    //分解IP进行运算,得出整形数
    $ip = explode('.', $ip);
    $ipNum = $ip[0] * 16777216 + $ip[1] * 65536 + $ip[2] * 256 + $ip[3];
 
    //获取IP数据索引开始和结束位置
    $DataBegin = fread($fd, 4);
    $DataEnd = fread($fd, 4);
    $ipbegin = implode('', unpack('L', $DataBegin));
    if($ipbegin < 0) $ipbegin += pow(2, 32);
    $ipend = implode('', unpack('L', $DataEnd));
    if($ipend < 0) $ipend += pow(2, 32);
    $ipAllNum = ($ipend - $ipbegin) / 7 + 1;
 
    $BeginNum = 0;
    $EndNum = $ipAllNum;
    $ip1num=0;
    $ip2num=0;
    //使用二分查找法从索引记录中搜索匹配的IP记录
    while($ip1num>$ipNum || $ip2num<$ipNum) {
        $Middle= intval(($EndNum + $BeginNum) / 2);
 
        //偏移指针到索引位置读取4个字节
        fseek($fd, $ipbegin + 7 * $Middle);
        $ipData1 = fread($fd, 4);
        if(strlen($ipData1) < 4) {
            fclose($fd);
            return 'System Error';
        }
        //提取出来的数据转换成长整形,如果数据是负数则加上2的32次幂
        $ip1num = implode('', unpack('L', $ipData1));
        if($ip1num < 0) $ip1num += pow(2, 32);
 
        //提取的长整型数大于我们IP地址则修改结束位置进行下一次循环
        if($ip1num > $ipNum) {
            $EndNum = $Middle;
            continue;
        }
 
        //取完上一个索引后取下一个索引
        $DataSeek = fread($fd, 3);
        if(strlen($DataSeek) < 3) {
            fclose($fd);
            return 'System Error';
        }
        $DataSeek = implode('', unpack('L', $DataSeek.chr(0)));
        fseek($fd, $DataSeek);
        $ipData2 = fread($fd, 4);
        if(strlen($ipData2) < 4) {
            fclose($fd);
            return 'System Error';
        }
        $ip2num = implode('', unpack('L', $ipData2));
        if($ip2num < 0) $ip2num += pow(2, 32);
 
        //没找到提示未知
        if($ip2num < $ipNum) {
            if($Middle == $BeginNum) {
                fclose($fd);
                return 'Unknown';
            }
            $BeginNum = $Middle;
        }
    }
 
 
    $ipFlag = fread($fd, 1);
    if($ipFlag == chr(1)) {
        $ipSeek = fread($fd, 3);
        if(strlen($ipSeek) < 3) {
            fclose($fd);
            return 'System Error';
        }
        $ipSeek = implode('', unpack('L', $ipSeek.chr(0)));
        fseek($fd, $ipSeek);
        $ipFlag = fread($fd, 1);
    }
 
    if($ipFlag == chr(2)) {
        $AddrSeek = fread($fd, 3);
        if(strlen($AddrSeek) < 3) {
            fclose($fd);
            return 'System Error';
        }
        $ipFlag = fread($fd, 1);
        if($ipFlag == chr(2)) {
            $AddrSeek2 = fread($fd, 3);
            if(strlen($AddrSeek2) < 3) {
                fclose($fd);
                return 'System Error';
            }
            $AddrSeek2 = implode('', unpack('L', $AddrSeek2.chr(0)));
            fseek($fd, $AddrSeek2);
        } else {
            fseek($fd, -1, SEEK_CUR);
        }
 
        while(($char = fread($fd, 1)) != chr(0))
            $ipAddr2 .= $char;
 
        $AddrSeek = implode('', unpack('L', $AddrSeek.chr(0)));
        fseek($fd, $AddrSeek);
 
        while(($char = fread($fd, 1)) != chr(0))
            $ipAddr1 .= $char;
    } else {
        fseek($fd, -1, SEEK_CUR);
        while(($char = fread($fd, 1)) != chr(0))
            $ipAddr1 .= $char;
 
        $ipFlag = fread($fd, 1);
        if($ipFlag == chr(2)) {
            $AddrSeek2 = fread($fd, 3);
            if(strlen($AddrSeek2) < 3) {
                fclose($fd);
                return 'System Error';
            }
            $AddrSeek2 = implode('', unpack('L', $AddrSeek2.chr(0)));
            fseek($fd, $AddrSeek2);
        } else {
            fseek($fd, -1, SEEK_CUR);
        }
        while(($char = fread($fd, 1)) != chr(0)){
            $ipAddr2 .= $char;
        }
    }
    fclose($fd);
 
    //最后做相应的替换操作后返回结果
    if(preg_match('/http/i', $ipAddr2)) {
        $ipAddr2 = '';
    }
    $ipaddr = "$ipAddr1 $ipAddr2";
    $ipaddr = preg_replace('/CZ88.Net/is', '', $ipaddr);
    $ipaddr = preg_replace('/^s*/is', '', $ipaddr);
    $ipaddr = preg_replace('/s*$/is', '', $ipaddr);
    if(preg_match('/http/i', $ipaddr) || $ipaddr == '') {
        $ipaddr = 'Unknown';
    }
 
    return $ipaddr;
}
 
 
//========================
//
//  调用举例(速度很快)
//
//========================
 
/**
 * testing use
 * 
echo convertip("192.168.101.888.99")."<br>";
 
echo convertip("192.168.101.118")."<br>";
 
echo convertip('219.238.235.10')."<br>";
//输出: 北京市 电信通
 
echo convertip('23.56.82.12')."<br>";
//输出:IANA
 
echo convertip('250.69.52.0')."<br>";
//输出:IANA保留地址
 
echo convertip('238.69.52.0')."<br>";
//输出:IANA保留地址 用于多点传送
 
echo convertip('192.168.0.1')."<br>";
//输出:局域网 对方和您在同一内部网
 
echo convertip('255.255.255.255')."<br>";
//输出:纯真网络 
 
  */
?>

Tags: ,

Search

文章分类

Links

Meta