V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
mini
V2EX  ›  PHP

mb_substr()问题,求指教

  •  
  •   mini · 2012-09-29 00:18:15 +08:00 · 4537 次点击
    这是一个创建于 4442 天前的主题,其中的信息可能已经有所发展或是发生改变。
    问一下大家,我试着自己写blog,然后前台页面一个列表页一个详情页,列表页面(主页)对文章的显示是限制字数的,详情页面试全文。

    echo mb_substr($row['content'],0,200,'utf-8');

    在手册找了半天找着个mb_substr函数对获取到的content限制了字数(200字节),但就遇到想推他和微博的问题了,中文和英文字母同样200个字符占位显然不一样==

    我前台用的bootstrap, 想让段落间是一样的,有木有能判断中文英文然后控制不同长度的函数==



    我在点点上面也发了同样的两个试了一下,也是默认显示一定长度。是我想太多了么


    白丁求指导。

    @haiyang416 @aidai524
    8 条回复    1970-01-01 08:00:00 +08:00
    satgi
        1
    satgi  
       2012-09-29 00:33:01 +08:00
    中英文宽度不一样啊,你试试固定高度,然后overflow: hidden
    mini
        2
    mini  
    OP
       2012-09-29 00:43:35 +08:00
    @satgi 恩,本来想用css控制来着,就是先问问php有没有直接的函数能解决,我知道宽度不一样,我估摸着应该有这么一个函数或者结合其他先判断中文英文然后控制不同的字数(先手动的试一下中英文相同宽高时的字节比例) 不过谢了
    haiyang416
        3
    haiyang416  
       2012-09-29 02:08:05 +08:00
    不理解你这什么需求是为了什么呀,难道你还要写全英文么?

    你用mb_substr($string, 0, 200, 'UTF-8')截取字符串,汉字和英文当然就是等长的。

    如果你觉得200英文字符太短的话,就只能自己写个函数,直接正则匹配字符串,如果是全字母和数字,就多截取一些,中文就少截取一些。

    或者直接substr截取,汉字的字节要比英文多,同样长度,英文多3倍左右字符。

    还要考虑到不要截断单个汉字和英文单词。
    haiyang416
        4
    haiyang416  
       2012-09-29 02:12:02 +08:00
    可以打印看下。
    http://gist.github.com/3801331
    fmfsaisai
        5
    fmfsaisai  
       2012-09-29 02:26:50 +08:00
    wsph123
        6
    wsph123  
       2012-09-29 19:56:14 +08:00
    function utf_substr($str,$len){
    if(strlen($str)<$len)return $str;
    for($i=0,$p=0;$i<$len;$i++)
    $p+=ord(substr($str,$p,1))>127?3:1;
    $re=substr($str,0,$p);
    if($re!=$str)$re.='…';
    return $re;
    }

    我之前写的函数如何?
    mini
        7
    mini  
    OP
       2012-09-29 22:21:04 +08:00
    @haiyang416
    @fmfsaisai
    @wsph123 谢谢各位!
    mini
        8
    mini  
    OP
       2012-09-29 22:56:33 +08:00
    @haiyang416
    @fmfsaisai
    最后用了mb_strimwidth($row['content'],0,100,"...")
    觉得substr($row['content'],0,100)也可以。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3127 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 13:39 · PVG 21:39 · LAX 05:39 · JFK 08:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.