仓酷云
标题:
PHP网站制作之php的汉字转换: Unicode(UTF8)->GB...
[打印本页]
作者:
深爱那片海
时间:
2015-2-4 00:11
标题:
PHP网站制作之php的汉字转换: Unicode(UTF8)->GB...
对于PHP的语法结构,刚开始真的很不习惯,真搞不懂为什么每个变量之前都要加个“$”符号,每个语句写完之后都必须加上“分号”来表示此句已经结束,还有,PHP对字母的大小写是敏感的,写的时候一定要注意大小写的区别。汉字|转换
秋水无恨 GBK Unicode UTF8 汉字 转换
php的汉字转换一向是对照费事的事
该类内置了四个过滤"&#[dec];","&#x[hex];","%u[hex]","utf8转换"
便利用户的利用,同时也可自界说过滤停止本人喜好的操作
qswhU.php 从这里下载
http://www.blueidea.com/user/qswh/qswhU.zip
class qswhU{
var $qswhData;
function qswhU($filename="qswhU.php"){
$this->qswhData=file($filename);
}
function decode($str,$pattern=0){
$arr=array("/&#(\w+);/iU","/((%\w\w)+)/i","/%u(\w{4,5})/iU");
if(is_integer($pattern)){
if($pattern>=count($arr))die("Invalid Function");
$pattern=$arr[$pattern];
}
return preg_replace_callback($pattern,array($this,"u2gb"),$str);
}
function u2gb($arr){
/******(qiushuiwuhen 2002-8-15)******/
$ret="";$str=$arr[1];
if(preg_match_all("/%\w{2}/",$str,$matches)){
for($i=0;$i<count($matches[0]);$i++){
$chr1=hexdec(substr($matches[0][$i],1));
$arr=array("f0","e0","c0","0");
for($j=0;$j<count($arr);$j++)if($chr1>hexdec($arr[$j]))break;
$chr=hexdec(substr($matches[0][$i],1))-hexdec($arr[$j]);
while(++$j<count($arr))$chr=$chr*0x40+(hexdec(substr($matches[0][++$i],1))-0x80);
$str=dechex($chr);
if(strlen($str)==4){
$p=hexdec(substr($str,0,2))-0x4d;
$q=hexdec(substr($str,2))*4;
$ret.=chr(hexdec(substr($this->qswhData[$p],$q,2)));
$ret.=chr(hexdec(substr($this->qswhData[$p],$q+2,2)));
}else
$ret.=chr(hexdec($str));
}
}
else{
if(strtolower($str[0])=="x")
$str=substr($str,1);
else
if(strlen($str)!=4)$str=dechex($str);
if(strlen($str)==4){
$p=hexdec(substr($str,0,2))-0x4d;
$q=hexdec(substr($str,2))*4;
$ret.=chr(hexdec(substr($this->qswhData[$p],$q,2)));
$ret.=chr(hexdec(substr($this->qswhData[$p],$q+2,2)));
}else
$ret.=chr(hexdec($str));
}
return $ret;
}
}
利用典范
$qswh=new qswhU("qswhU.php");//假如文件名是qswhU.php,可省参数
echo "<xmp>不带参数(默许过滤为:&#[num];):";
echo "\n".$qswh->decode("中文Abc");
echo "\n".$qswh->decode("中文Abc");
echo "\n挪用内置过滤(UTF转码):".$qswh->decode("%E4%B8%AD%E6%96%87%20!%22%23%24%25%26'()*%2B%2C%2F%3A%3B%3C%3D%3E%3F%40%5B%5D%5E%60%7B%7C%7D~%25Abc",1);
echo "\n挪用内置过滤unescape(%u[num]):".$qswh->decode("%u4E2D%u6587Abc",2);
echo "\n自界说过滤([x+num]):".$qswh->decode("[x4E2D][x6587][x41][x62][x63]","/\[(\w+)\]/");
后果以下:
不带参数(默许过滤为:&#[num];):
中文Abc
中文Abc
挪用内置过滤(UTF转码):中文 !"#$%&'()*+,/:;<=>?@[]^`{|}~%Abc
挪用内置过滤unescape(%u[num]):中文Abc
自界说过滤([x+num]):中文Abc
当然你可以把你最基本的功能放出来的时候就放出来,比如放到论坛上,让大家都参与,
作者:
海妖
时间:
2015-2-4 09:53
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
作者:
山那边是海
时间:
2015-2-6 03:00
装在C盘下面可以利用windows的ghost功能可以还原回来(顺便当做是重转啦),当然啦我的编译目录要放在别的盘下,不然自己的劳动成果就悲剧啦。
作者:
简单生活
时间:
2015-2-10 22:10
对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。
作者:
变相怪杰
时间:
2015-2-25 00:13
说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年 具体的记不清啦,囧。
作者:
飘灵儿
时间:
2015-2-28 13:08
先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。
作者:
仓酷云
时间:
2015-3-1 14:02
首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。
作者:
若天明
时间:
2015-3-10 18:24
小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。
作者:
第二个灵魂
时间:
2015-3-11 03:22
不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。
作者:
金色的骷髅
时间:
2015-3-11 15:24
我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。
作者:
飘飘悠悠
时间:
2015-3-17 08:43
没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。
作者:
莫相离
时间:
2015-3-17 19:29
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
作者:
再见西城
时间:
2015-3-21 21:47
对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。
作者:
小女巫
时间:
2015-3-24 17:25
如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了,
作者:
深爱那片海
时间:
2015-3-27 23:10
因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax
作者:
灵魂腐蚀
时间:
2015-4-5 08:40
曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线 \\\\\\\'_\\\\\\\' ;
作者:
不帅
时间:
2015-4-11 01:13
学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql
作者:
谁可相欹
时间:
2015-4-12 13:08
对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。
作者:
爱飞
时间:
2015-4-16 08:14
多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。
作者:
admin
时间:
2015-4-18 01:59
Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81
作者:
老尸
时间:
2015-5-11 23:46
不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2