CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
(图)邪恶的韩国UMPC 使用 Java 编写数据库应用新规范
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  PHP

求救,print 显示中文字符的困扰~~~~

楼主weisun(巍巍)2005-10-19 13:30:14 在 Web 开发 / PHP 提问

我在做一个显示列表的功能,其中有一个备注字段,由于字段长度限制,我最后让其显示备注字段值一部分,也就是说,只让显示其十个字符,我采用<?phh   print   substr($s_v_content,   0,   20);?>,不如问题来了,当这些字符中用标点符号,或者,英文字母,或者是数字时,(主要是占半个字符)如果是奇数位,最后显示的效果总会有&nbsp;这样的符号,请问如何去掉这个符号,谢谢!!! 问题点数:20、回复次数:17Top

1 楼liuyumu(猫仔队长)回复于 2005-10-19 14:00:01 得分 0

不要使用substr,   使用mb_substr函数,是几个字符就截取几个。   mb_substr函数支持编码方式(GB2312,   UTF-8)。Top

2 楼weisun(巍巍)回复于 2005-10-19 14:09:11 得分 0

我用了mb_substr().可是系统报错,说是用了未定义的函数!Top

3 楼zhongjihang()回复于 2005-10-19 14:17:19 得分 0

我使用的是php5,说没定义mb_substr()函数,不会是不支持吧Top

4 楼zhongjihang()回复于 2005-10-19 14:22:08 得分 0

我试了一下,PHP4是可以的,不过总返回个1  
  PHP5不行  
  不知道你们的会不会有这种情况Top

5 楼yh801216(艾奥利斯)回复于 2005-10-19 14:32:22 得分 0

加载mb库没有啊。  
  另外,不用它也一样可以做到。呵呵,那就是中文编码的问题了,呵呵ord($str[$i])是否小于128。  
  呵呵Top

6 楼weisun(巍巍)回复于 2005-10-19 14:39:04 得分 0

为什么还是没有人来实际解决呢,都等不及了Top

7 楼ipsearch2008(ipsearch)回复于 2005-10-19 15:03:45 得分 0

用自己写的函数:  
  function   sub_str($str,$len){  
        $str   =   (string)$str;  
        $len   =   (int)$len;  
   
        $strlen   =   strlen($str);  
        if($len>$strlen)   $len   =   $strlen;  
   
        $i   =   0;  
        $fixlen   =   0;  
        while($i<$len){  
              $chr   =   $str[$i];  
              $i++;  
              if(ord($chr)<0x80)   $fixlen++;  
              elseif($i<$len){  
                  $i++;  
                  $fixlen   +=   2;  
              }  
        }  
   
        return   substr($str,0,$fixlen);  
  }    
   
  <?phh   print   sub_str($s_v_content,   0,   20);?>,Top

8 楼xuzuning(唠叨)回复于 2005-10-19 17:07:20 得分 0

print   iconv_substr($s_v_content,   0,   20,   'gbk');  
   
  php5中内嵌iconv函数组,不需要另外加载  
   
  哈哈,php5想把日本鬼子赶出php舞台啦!  
  Top

9 楼weisun(巍巍)回复于 2005-10-20 09:35:48 得分 0

不行啊,我现在用的是老的PHP,4.X版本的,在原来系统中进行修改的,所以不可能对PHP进行配置或加载的,各位大侠行行好,还有没有简单易行的方法!!Top

10 楼zhongjihang()回复于 2005-10-20 12:48:45 得分 0

我怎么用substr()也不会出现&nbsp;这种情况啊  
  奇数什么都试了  
   
  不过用   iconv_substr($s_v_content,   0,   20,   'gbk')中文也算一个字符  
  也还挺方便的Top

11 楼weisun(巍巍)回复于 2005-10-20 13:16:23 得分 0

我想这个问题,对PHP程序员来说,也不算是难事,为什么就没人解答呢,郁闷!!!Top

12 楼dxflingxing(dxf零星)回复于 2005-10-20 14:38:06 得分 0

ipsearch2008(ipsearch)已经给出你代码了啊,  
  还不结帐,呵呵Top

13 楼weisun(巍巍)回复于 2005-10-20 16:31:07 得分 0

还是不行ipsearch2008(ipsearch)的代码,似呼没什么变化,还是会出现&nbsp;Top

14 楼szhnet(阿华)回复于 2005-10-21 09:32:53 得分 0

朋友,请关注一下此帖:  
  http://community.csdn.net/Expert/topic/4338/4338855.xml?temp=.8305628Top

15 楼wjjchen(redfox)回复于 2005-10-24 13:48:35 得分 0

唠叨以前发的。  
  <?  
  //用法与substr函数一样  
  function   c_substr($str,$start=0)   {  
      $ch   =   chr(127);  
      $p   =   array("/[\x81-\xfe]([\x81-\xfe]|[\x40-\xfe])/","/[\x01-\x77]/");  
      $r   =   array("","");  
      if(func_num_args()   >   2)  
          $end   =   func_get_arg(2);  
      else  
          $end   =   strlen($str);  
      if($start   <   0)  
          $start   +=   $end;  
   
      if($start   >   0)   {  
          $s   =   substr($str,0,$start);  
          if($s[strlen($s)-1]   >   $ch)   {  
              $s   =   preg_replace($p,$r,$s);  
          $start   +=   strlen($s);  
          }  
      }  
      $s   =   substr($str,$start,$end);  
      $end   =   strlen($s);  
      if($s[$end-1]   >   $ch)   {  
          $s   =   preg_replace($p,$r,$s);  
          $end   +=   strlen($s);  
      }  
      return   substr($str,$start,$end);  
  }  
  ?>Top

16 楼weisun(巍巍)回复于 2005-10-27 14:25:53 得分 0

没看懂.不知道怎么用!!Top

17 楼wjjchen(redfox)回复于 2005-11-09 12:26:42 得分 0

substr你怎么用,这个函数就怎么用。Top

相关问题

  • 中文字符的处理
  • 中文字符问题
  • mysql5.0中文字符问题
  • 中文字符问题
  • 如何将Unicode字符串转为Ansi/MBCS字符串(含中文字符的)
  • 如何在字符串中检查出中文字符??
  • 英文字符和中文字符的长度如何比较?
  • 如何判断一个字符串中存在中文字符?
  • 如何在字符串中提取中文字符
  • 怎样判断字符是否为中文字符?

关键词

  • 字符
  • 函数
  • 字段
  • 中文
  • php
  • ipsearch
  • 加载
  • 显示
  • substr
  • iconv

得分解答快速导航

  • 帖主:weisun

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo