仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1637|回复: 20
打印 上一主题 下一主题

[学习教程] PHP网站制作之php的汉字转换: Unicode(UTF8)->GB...

[复制链接]
深爱那片海 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-4 00:11:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
对于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("中文&#x41;&#x62;&#x63;");
echo "\n".$qswh->decode("中文&#65;&#98;&#99;");
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:14 | 只看该作者
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
山那边是海 该用户已被删除
板凳
发表于 2015-2-6 03:00:32 | 只看该作者
装在C盘下面可以利用windows的ghost功能可以还原回来(顺便当做是重转啦),当然啦我的编译目录要放在别的盘下,不然自己的劳动成果就悲剧啦。
简单生活 该用户已被删除
地板
发表于 2015-2-10 22:10:55 | 只看该作者
对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。
变相怪杰 该用户已被删除
5#
发表于 2015-2-25 00:13:48 | 只看该作者
说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年  具体的记不清啦,囧。
飘灵儿 该用户已被删除
6#
发表于 2015-2-28 13:08:46 | 只看该作者
先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。
7#
发表于 2015-3-1 14:02:09 | 只看该作者
首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。
若天明 该用户已被删除
8#
发表于 2015-3-10 18:24:15 | 只看该作者
小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。
第二个灵魂 该用户已被删除
9#
发表于 2015-3-11 03:22:25 | 只看该作者
不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。
金色的骷髅 该用户已被删除
10#
发表于 2015-3-11 15:24:47 | 只看该作者
我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。
飘飘悠悠 该用户已被删除
11#
发表于 2015-3-17 08:43:32 | 只看该作者
没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。
莫相离 该用户已被删除
12#
发表于 2015-3-17 19:29:19 | 只看该作者
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
再见西城 该用户已被删除
13#
发表于 2015-3-21 21:47:18 | 只看该作者
对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。
小女巫 该用户已被删除
14#
发表于 2015-3-24 17:25:51 | 只看该作者
如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了,
深爱那片海 该用户已被删除
15#
 楼主| 发表于 2015-3-27 23:10:23 | 只看该作者
因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax
灵魂腐蚀 该用户已被删除
16#
发表于 2015-4-5 08:40:03 | 只看该作者
曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线  \\\\\\\'_\\\\\\\' ;
不帅 该用户已被删除
17#
发表于 2015-4-11 01:13:09 | 只看该作者
学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql
谁可相欹 该用户已被删除
18#
发表于 2015-4-12 13:08:32 | 只看该作者
对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。
爱飞 该用户已被删除
19#
发表于 2015-4-16 08:14:06 | 只看该作者
多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。
admin 该用户已被删除
20#
发表于 2015-4-18 01:59:40 | 只看该作者
Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-21 01:39

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表