仓酷云

标题: PHP编程:技能:PHP关于中文汉字交换与形式婚配的... [打印本页]

作者: 小魔女    时间: 2015-2-4 00:01
标题: PHP编程:技能:PHP关于中文汉字交换与形式婚配的...
应该大致熟悉了一些学习过程,也许我的过程和你的有些出路,但是不管怎么样是殊途同归,我写这么多,也只是给大家一个借鉴的机会,至于好与不好,默默不敢打包票^0^     这两天正在做一个关头字加亮显示的法式,写好的法式在当地测试也跑得好好的,可是一上去页面就呈现一堆一堆的乱码,别说加亮了,几乎就是没的看!
  我就找毛病,找来找去,发明英文没有成绩,碰到汉字轻易出成绩,有的时分碰到汉字必出成绩。
  总结一下:
  当利用形式婚配的时分,如:preg_match_all($pat,……)与preg_replace($pat,……)……
  轻易出成绩的情形以下:
  preg_match_all("/(汉字)+/ism","我是汉字,看你把我怎样着!",$m_a);
  这个形式很复杂就是婚配出“汉字”。这类情形形式中包括汉字可以胜利婚配出来,然而也不要乐意得太早,了局不肯定,为何不肯定你渐渐往下看。
  必呈现成绩情形以下:
  preg_match_all("/[汉字]+/ism","我是汉字,看你把我怎样着!",$m_a);
  本想婚配呈现“汉”、“字”或“汉字”。这个必呈现成绩,婚配的了局一大群乱码,没准还会出个逝世轮回呢。为何会呈现这类情形?是由于PHP外部利用不是UNICODE,不撑持多字节文字,所以一个"汉字"就被当做4bytes的ASCII去停止形式婚配,不失足才怪呢!
  后来我又尝尝从头写一下形式婚配,发明一种仿佛(为何说仿佛?往后看)办法可以处理:
  preg_match_all("/(汉|字)+/ism","我是汉字,看你把我怎样着!",$m_a);
  如许写可以婚配出“汉”、“字”或“汉字”,$m_a中的了局
Array
(
[0] => Array
(
[0] => 汉字
)
[1] => Array
(
[0] => 字
)
)
  怎样全婚配的字符串呈现了吧!可是乐意得太早了,后来在实践顶用仍是会常常出成绩!再去找成绩,终究找到成绩的根了!PHP不撑持多字节文字,所以在停止形式婚配与字符操作的时分都是内码转化落后行的(我不晓得如许说对不合错误),举个实例吧:
  eregi_replace("性","没有" , "有义务感");这个操作就是要把字符串"有义务感"中"性"字交换成"没有",最初的了局是甚么?由于"有义务感"中没有"性"就个字,了局应当是没有履行交换操作前往"有义务感",可是了局居然是"用挥叙任感"!
  没想到吧!为何?看一下ASCII码你就分明了,2个ASCII码代码一个汉字"有义务感"的ASCII编码顺次为:211,208(有),212,240(责),200,206(任),184,208(感) 
  而"性"的编码为:208,212(性),刚好与有的第2字节和责的第1字节组合是分歧的!所以PHP就熟悉找到不异的形式停止婚配,拆成一半的汉字再与交换后的字串停止组合,所以就失足了!
  事先我想最经常使用的str_replace(),应当不会有成绩的,然而现实上str_replace()履行一样的操作也会失足!如今我想之前停止汉字交换其实是太侥幸了!多是谁人时分停止的汉字交换都是对照长的汉字串吧,不太轻易呈现以上的情形。即便没有出成绩,也要晓得那是不平安的!
  成绩是有的,任务还要持续做,克制的坚苦也就::::如今的自我了。
  好在想起一组PHP的扩大模块,Multibyte String Functions,添加很多撑持多字节文字的操作的函数,如:ereg_replace() 对应着mb_ereg_replace() 等等。详细的函数申明请查询相干的文章。
  总结:关于中文汉字平安的操作最好是利用Multibyte String Functions。
学习了六个多月PHP了,还是个新手,在这里受到了很多人的帮助,谢谢你们!
作者: 愤怒的大鸟    时间: 2015-2-4 08:03
其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。
作者: 谁可相欹    时间: 2015-2-4 13:31
当然这种网站的会员费就几十块钱。
作者: 老尸    时间: 2015-2-9 23:38
当然这种网站的会员费就几十块钱。
作者: 飘飘悠悠    时间: 2015-2-28 07:27
php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。
作者: 分手快乐    时间: 2015-3-4 12:11
对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。
作者: admin    时间: 2015-3-8 12:03
你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。
作者: 仓酷云    时间: 2015-3-11 08:12
个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。
作者: 小妖女    时间: 2015-3-13 08:09
我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:
作者: 若相依    时间: 2015-3-20 17:16
当留言板完成的时候,下步可以把做1个单人的blog程序,做为目标,
作者: 第二个灵魂    时间: 2015-3-22 18:12
再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。
作者: 蒙在股里    时间: 2015-3-27 22:10
当然这种网站的会员费就几十块钱。
作者: 金色的骷髅    时间: 2015-4-4 00:27
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
作者: 再现理想    时间: 2015-4-21 21:12
作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。
作者: 爱飞    时间: 2015-4-28 15:00
爱上php,他也会爱上你。
作者: 柔情似水    时间: 2015-5-6 14:11
最后介绍一个代码出错,但是老找不到错误方法,就是 go to wc (囧),出去换换气没准回来就找到错误啦。
作者: 因胸联盟    时间: 2015-5-11 01:13
曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线  \\\\\\\'_\\\\\\\' ;
作者: 灵魂腐蚀    时间: 2015-5-11 20:20
遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。
作者: 只想知道    时间: 2015-7-12 21:47
至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。




欢迎光临 仓酷云 (http://www.ckuyun.com/) Powered by Discuz! X3.2