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
2010年发布imgShow的2.0版本兼容Jquery,无需插入代码
星期日, 一月 10th, 2010 | php, wordpress | 12 Comments
今天难得休假一天,也抽个时间把imgShow这个插件更新至2.0版本
新版修正了和jquery不兼容的bug,和使用者的反馈,实现了自动给文章内容的图片实现imgShow的展示功能,此版本继续兼容使用代码的方式;
下载地址:imgshow2.0
1.0版本和使用更多信息见:ImgShow图片点击滚轮缩放的wordpress插件(plugins)
下图是新版展示:
修正imgShow的兼容Jquery版本
星期二, 十二月 8th, 2009 | php, wordpress | 一条评论
自己写的imgShow的图片展示插件,看反馈 zLear 说 “跟jQuery有冲突 激活插件后jQuery的特性就没有了”,看了下,果然有冲突,今天修正个版本,放去去了
具体方式见此插件页,点击这里详解
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已经搭建完毕
颜色六位码和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
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--> |
—-2010-04-22更新至2.0.2.2版本—————————-
—-2010-04-05更新至2.0.2.1版本—————————-
2.修正在一篇文章中多个图片的加载问题
3.增加鼠标移动到图片显示手型的样式
== 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
新版修正了和jquery不兼容的bug,和使用者的反馈,实现了自动给文章内容的图片实现imgShow的展示功能,此版本继续兼容使用代码的方式;
2.版本更新至2.0.1版本 version 2.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等的鼠标滚轮缩放和鼠标移动功能!
example:
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 文件
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>"; //输出:纯真网络 */ ?> |
Search
相关文章
热门文章
最新文章
文章分类
- ajax (10)
- algorithm-learn (3)
- Android (6)
- as (3)
- computer (85)
- Database (30)
- disucz (4)
- enterprise (1)
- erlang (2)
- flash (5)
- golang (3)
- html5 (18)
- ios (4)
- JAVA-and-J2EE (186)
- linux (143)
- mac (10)
- movie-music (11)
- pagemaker (36)
- php (50)
- spring-boot (2)
- Synology群晖 (2)
- Uncategorized (6)
- unity (1)
- webgame (15)
- wordpress (33)
- work-other (2)
- 低代码 (1)
- 体味生活 (40)
- 前端 (21)
- 大数据 (8)
- 游戏开发 (9)
- 爱上海 (19)
- 读书 (4)
- 软件 (3)