strlen($str) <= 280不能实现
该怎么实现像微博那样140个字的限制

解决方案 »

  1.   


    这个输入英文不行,例如
     echo mb_strlen('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa', 'utf-8');
    得到的是270,是不对的
      

  2.   

    本帖最后由 xuzuning 于 2012-11-12 13:47:55 编辑
      

  3.   

    那是你的js写的有问题,与php有什么关系?
      

  4.   


    我是提交到服务器来判断的,我希望提交时用Php来判断,不是在客户端用js判断,只是希望实现和微博字数一样的控制方法
      

  5.   

    本帖最后由 xuzuning 于 2012-11-12 14:20:35 编辑
      

  6.   

    好吧,我说不清楚了,还是上代码吧:html文件:
    <form action="strlen.php" method="post">
    <textarea id="content" name="content"></textarea><br>
    <input type="submit" name="s" value="提交">strlen.php:<?php
    if (isset($_POST['s']))
    {
        $content = $_POST['content'];
        if (mb_strlen($content, 'utf-8') > 140)
        {
            echo '字数已超';
        }
        else 
        {
            echo '提交成功';
        }
    }现在我输入的字数没到140个字却提示‘字数已超’
      

  7.   

    function strlen_utf8($str) {
            $i = 0;
            $count = 0;
            $len = strlen ($str);
            while ($i < $len) {
                $chr = ord ($str[$i]);
                $count++;
                $i++;
                if($i >= $len) break;
                if($chr & 0x80) {
                    $chr <<= 1;
                    while ($chr & 0x80) {
                        $i++;
                        $chr <<= 1;
                    }
                }
            }
            return $count;
        }
      

  8.   

    设字符集为 utf-8
    字数:中文为2,西文为1
    则总字数为 (mb_strlen($s, 'utf-8') + strlen($s)) / 2;