………………这个要求有点BY了。能够区分英文单词,就是一种非常了不起的程序了,你更有趣,向区分段落。你的段落有分隔符么?使用的是什么样的分隔符?如果是p关键字的,还好说,但是,如果是其他的呢?唉~~你就慢慢烤炉吧,这个问题,就够你解决的了。而且,其他的维护人员不知道这样的规则,你不是要被骂死????

解决方案 »

  1.   

    function substr_cn($str_cut,$length = 30){  
    $ext="...";
    if (strlen($str_cut) > $length){ 
    for($i=0; $i < $length; $i++) 
    if (ord($str_cut[$i]) > 128) $i++; 
    $str_cut = substr($str_cut,0,$i) . $ext; 

    return $str_cut; 
    }
    ?>
    我有个中文截取的函数
      

  2.   

    ‘字’包括哪些?如何计算?首先,中文是gb码还是utf8?
    英文、数字算一个字还是半个字?
    有无html标记或其它特殊标记,是否计入500‘字’?
      

  3.   

    1、gb
    2、英文数字要求不是那么严格,算一个字也行、算半个字也可以
    2、有html标记或其它特殊标记,,应该计入500‘字’,如果不计入也没有太大问题,
      

  4.   

    既然不严格要求,加上你说的”段落是以<br>分开的”那就先
    substr 500*2 字节下来,
    然后 strrpos '<br/>' 找到最后一个<br/> 从这个位置分割即可如果没找到,说明只有一段,就向后 strpos 找到第一个<br/> 分割即可
      

  5.   

    substr,可能会取到半个字,弄得都是乱码
      

  6.   

    $content="智,商大考验能过去的人不多啊智商大考能过去的人不多啊智商大考验的人不多啊";
    $len=strlen($content);
    $con=ceil($len/3);
    echo $con;
    for($i=0;$i<$con;$i++)
    {
    $ca=cnSubStr($content,(6*$i),6);
    echo $ca."<br>";

    }
      

  7.   

    $content="智,商大考验能过去的人不多啊智商大考能过去的人不多啊智商大考验的人不多啊";
    $len=strlen($content);
    $con=ceil($len/3);
    echo $con;
    for($i=0;$i<$con;$i++)
    {
    $ca=cnSubStr($content,(6*$i),6);
    echo $ca."<br>";

    }
    上面写的,如果都是汉字就是正常的,如果有符号,输出的就都是乱码
      

  8.   

    写错了,上面的cnSubStr应该为substr
      

  9.   

    $buffer = '';
    while($r = 读一段()) {
      if(strlen($buffer.$r)>500) break;
      $buffer .= $r;
    }
    echo $buffer;
      

  10.   

    xuzuning(唠叨) 大哥:
    Fatal error: Call to undefined function 读一段() in C:\AppServ\www\zifu.php on line 35
      

  11.   

    xuzuning(唠叨) 大哥:
    Fatal error: Call to undefined function 读一段() in C:\AppServ\www\zifu.php on line 35
    -------------
    呵呵,lz........
    是不是copy惯了?
      

  12.   

    找出特殊的段落标记
    然后用正则啊
    (?<name>.{0,500})</br>
      

  13.   

    。。(必须为完整的一段)<p>做段落标记或许比<br>好弄一点
      

  14.   

    现在我已经把一篇文章分成了块(每块500个字)!
    现在的问题是:我怎么判断一段的问题,现在有的是二段+一个半段,,有的是不到一段。我应该怎么处理?用strrpos我没有处理明白!
      

  15.   

    个人认为:
    那就先
    substr 500*2 字节下来,
    然后 strrpos '<br/>' 找到最后一个<br/> 从这个位置分割即可如果没找到,说明只有一段,就向后 strpos 找到第一个<br/> 分割即可
    =====================================思路是对的,但怎么写,我就不清楚了,等待高手出现!
      

  16.   

    我已经说的很清楚了!再说一遍
    根据:
    1、如果4段文字超过了500字,那么我只取前三段(前三段没有超过500字),不要第四段。
    2、段落是以<br/>分开的$text = '文章内容';
    $buffer = strtok($text, '<br/>');
    while($r = strtok('<br/')) {
      if(strlen($buffer.$r)>500) {
        $out[] = $buffer;
        $buffer = '';
      }else
        $buffer .= '<br/>'.$r;
    }
    $out[] = $buffer;print_r($out);
      

  17.   

    手误,不好意思。:)$text = '文章内容';
    $buffer = strtok($text, '<br/>'); //读取第一段
    while($r = strtok('<br/')) { //读取后续段
      if(strlen($buffer.$r)>500) { //如果已读内容加后续段的长度超过限制
        $out[] = $buffer; //保存已读内容
        $buffer = ''; //清空缓冲区
      }
      $buffer .= '<br/>'.$r; //将后续段附加在已读内容后
    }
    $out[] = $buffer;print_r($out);