• 卡农-四声部人声自拍 订阅本博客

    如何订阅博客?
  • Blog首页关于和平海底Blog存档联系自由勇网站地图友情链接

  • 郁闷的PHP字符串函数

    王志勇 发表于 2009年01月29日 12:49

    PHP的substr()是一个十分重要的函数,可以实现对字符串的处理,例如截取字符串的某部分,如把IP地址220.181.20.58替换为220.181.*.*,需要用到substr()函数。让人郁闷的是,substr()不支持中文,会产生乱码。JavaScript的substr()函数和ASP的Mid()函数,无论是UTF-8还gb2312编码,都可以很好地直接支持中文。

    另外如$pep="和平海底"; $auf=$pep[1];,$auf的结果是乱码,而不是“平”。如果使用数组array()函数如:$pep=array("和", "平", "海", "底"); $auf=$pep[1];,$auf的结果是仍然是乱码。

    如果substr()或者array()的处理字符是英文或者数字、半角符号,则没有问题。我用PHP4和PHP5测试了一下,都有此问题。在网上搜索了一下,因为PHP把处理的全角字符的字节拆开来处理,ANSI编码拆为2个字节,UTF-8编码拆为3个字节,需要另外一段程序,如“php 截取”。如果大量地使用substr(),再加上另外的这段程序来处理段落的中文字符,在一定程度上大大降低了程序的效率,增加服务器的负担和成本。

    PHP的替换函数str_replace(),以及查找字符的位置strpos()函数,则可以很好地直接支持中文全角字符。

    4条评论:
    1   zeal 2009-02-01 13:34
    安装mb库,用mb_前缀的字符串处理函数来处理多字节字符串。
    2   自由勇 2009-02-01 18:15
    谢谢。:)
    3   CodeBit.cn 2009-02-02 15:05
    $pep=array("和", "平", "海", "底");
    $auf=$pep[1];

    这个应该会返回 "平",
    造成乱码有时会和文件编码还有meta中声明有关。

    4   自由勇 2009-02-02 19:07
    文件编码、meta都使用UTF-8,
    使用header()设定UTF-8,也都有substr()中文乱码的问题。
    在不使用mb_substr()的情况下。:)

    发表评论:
    名字: (*必填)
    博客: (可省,仅限于Blog地址)
    验证码: s48p58a68c78e88c98r108a118f128t138 (*必填)

    正文:

      记住信息? 是 否

    直接发送Trackback到此文章

    说明:本评论系统不支持HTML代码。(您的留言需要审核,审核规则请见这里。)

     (点击申请)

    文章分类 Category:
    Blog的发展 Development
    为什么写博客 W-do we Blog
    互联网 Internet
    社会 Society
    教育 Education
    BBS社区研究 Community
    编程 Program
    友人 Younet
    QQ研究 QQ Research
    公告 Announcement

    最新的评论 Comments:
    » 毁谤别人的匿名者
    » 一家门户网站的博客管理
    » Entropay(欧贝
    » 又一位不可思议的扮音天
    » Google搜索结果在
    » 声卡无声硬件排除一例
    » 如何关闭ixwebho
    » 今天值得纪念的数字

    近期的主题:
    2012-01-26:多了解一些信息没有坏处
    日益低效的快递
    关于香港地铁吃东西事件的翻译
    2012-01-15:怜悯和爱
    惨不忍睹的网站空间(人为造成)
    QQ空间不能发表日志/说说/微博解决一例
    新年的钟声敲响了
    惠州之印象
    2011-10-20:最近4个不好的用户体验
    女童遭辗压无人帮助视频之感想
    网络才是真实的,现实一切都是幻象
    本博客的程序有发布的计划
    真正的神曲和一些圣乐分享和回顾
    Go Daddy的97.74 IP段又被大规模killed
    时间过得很快
    国外的域名查询也不安全
    祝我31周岁生日快乐
    有关国内近两年史无前例的清晰的UFO
    Android(安卓)平板电脑的使用体验
    2011-08-24:经验 & 近期动态
    2011-08-03 养花
    2011-06-18
    2011-06-02:同龄人年轻程度却相差10岁
    2011-05-28:随谈(浅谈)中英文输入速度
    Go Daddy空间切换系统更换IP时现在需要慎选4GH主机
    2011-05-18:随谈现实与理想(8)
    随谈:2011-05-18 贴吧与新闻评论的管理
    随谈:2011-05-13 心情很沉重很沉重
    随谈:2011-05-08 有良知的人会提升
    博客不应大量转载
    随谈:2011-04-28 通过网络调查真相当中的一个途径之一
    有关UFO与2012的谦卑交流与解答(1)
    cPanel的主机网页长时间500错误解决一例

    王志勇(自由勇):程序设计。
    公历1980-09-26 天秤座 32岁
    联系我:信息反馈、留言板。

    版权声明:本博客所有文章,均符合原创和创作共用的定义,禁止转载,违者将必究;正确的方法是贴原文的标题和网址即可。

    与此相关的链接
    和平海底2 | Auciou | 自由勇专栏
    公益:UFO与真相研究交流区
    Gratitude | Time

    Blog存档 Archives

    2012年01月(N)
    2011年10月(8)
    2011年09月(4)
    2011年08月(2)
    2011年06月(2)
    2011年05月(6)
    2011年04月(10)
    2011年03月(16)
    2011年02月(16)
    2011年01月(15)
    2010年12月(12)
    2010年11月(9)
    2010年10月(3)
    2010年05月(4)
    2010年01月(7)
    2009年12月(10)
    2009年11月(4)
    2009年10月(8)
    2009年09月(24)
    2009年08月(20)
    2009年07月(6)
    2009年06月(11)
    2009年05月(16)
    2009年04月(20)
    2009年03月(29)
    2009年02月(18)
    2009年01月(15)
    2008年12月(17)
    2008年11月(10)
    2008年10月(13)
    2008年09月(8)
    2008年08月(4)
    2008年07月(5)
    2008年06月(9)
    2008年05月(12)
    2008年04月(15)
    2008年03月(26)
    2008年02月(22)
    2008年01月(29)
    2007年12月(30)
    2007年11月(28)
    2007年10月(30)
    2007年09月(8)
    2007年08月(8)
    2007年07月(21)
    2007年06月(23)
    2007年05月(31)
    2007年04月(34)
    2007年03月(29)
    2007年02月(18)
    2007年01月(41)
    2006年12月(23)
    2006年11月(10)
    2006年10月(10)
    2006年09月(29)
    2006年08月(33)
    2006年07月(17)
    2006年06月(30)
    2006年05月(4)
    2006年01月(3)
    2005年09月(4)


  • Copyright © 2006-2012 auiou.com All rights reserved.
    此Blog程序由王志勇编写