使用php实现截取指定长度_php技巧

PHP语言: 根据中文裁减字符串

复制代码 代码如下:

function cutstr($string,$length, $dot = ' ...') {
  if (strlen($string) <= $length) {
      return$string;
  }
  $pre = chr(1);
  $end = chr(1);
  $string = str_replace(array('&','"', '<', '>'),array($pre . '&'. $end, $pre . '"' . $end, $pre . '<' .$end, $pre . '>' . $end), $string);

  $strcut = '';
  if (strtolower(CHARSET) == 'utf-8'){
      $n = $tn =$noc = 0;
      while ($n< strlen($string)) {

         $t =ord($string[$n]);
         if ($t == 9 || $t == 10 || (32<= $t && $t <= 126)) {
            $tn = 1;
            $n++;
            $noc++;
         } elseif (194 <= $t&& $t <= 223) {
            $tn = 2;
            $n += 2;
            $noc += 2;
         } elseif (224 <= $t&& $t <= 239) {
            $tn = 3;
            $n += 3;
            $noc += 2;
         } elseif (240 <= $t&& $t <= 247) {
            $tn = 4;
            $n += 4;
            $noc += 2;
         } elseif (248 <= $t&& $t <= 251) {
            $tn = 5;
            $n += 5;
            $noc += 2;
         } elseif ($t == 252 || $t ==253) {
            $tn = 6;
            $n += 6;
            $noc += 2;
         } else {
            $n++;
         }

         if ($noc >= $length){
            break;
         }
     }
      if ($noc> $length) {
         $n -= $tn;
     }
      $strcut =substr($string, 0, $n);
  } else {
      for ($i =0; $i < $length; $i++) {
         $strcut .= ord($string[$i])> 127 ? $string[$i] . $string[++$i] : $string[$i];
     }
  }
  $strcut = str_replace(array($pre . '&' .$end, $pre . '"' . $end, $pre . '<' . $end, $pre . '>' .$end), array('&', '"','<', '>'), $strcut);

  $pos = strrpos($strcut, chr(1));
  if ($pos !== false) {
      $strcut =substr($strcut, 0, $pos);
  }
  return $strcut . $dot;
}

时间: 2024-10-15 00:24:34

使用php实现截取指定长度_php技巧的相关文章

JavaScript截取指定长度字符串点击可以展开全部代码_javascript技巧

文章的篇幅往往不是那么恰到好处,如果以原有的篇幅展示,那么有可能会影响网页的布局或者美观度,这个时候就要根据情况适量截取一定的字符串,以适应布局,不过当点击一个按钮的时候依然可以展开全部的内容,下面就通过一个实例详细介绍一下如何实现此效果,代码示例如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name="author" conten

解决方案-截取指定长度的富文本内容可能会出现页面被凌乱的问题

问题描述 截取指定长度的富文本内容可能会出现页面被凌乱的问题 5C freemaker页面中截取指定长度的字符串,超出长度的部分用-替代 <#if topic.title?length lt 35> ${topic.title}<#else> ${topic.title?substring(035)}... </#if> 如果数据库中topic.title的内容不是纯文本,而是富文本(含有很多html标签的文本)内容,按指定 长度截取的话,就有可能会破坏富文本的html

jQuery截取指定长度字符串的实现原理及代码_jquery

截取指定长度字符串操作在网站建设中大量使用,尤其是在新闻列表这种类型的操作中大量应用. 下面就是一个截取字符串代码实例: <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="author" content="htt

jQuery截取指定长度字符串代码_jquery

例子,截取字符串代码. <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>jQuery截取字符串操作---www.jb51.net</title> <script type="text/javascript"

截取指定长度的文字(包含对汉字的处理)

一般来说,要截取的变量来自Mysql,首先要保证那个字段长度要足够长,一般为char(200),可以保持100个汉字,包括标点. 本程序实现的功能:截取指定长度汉字而不会出现以"?>"结尾,超出部分以"..."代替 <?PHP $str="这个字符比较长SO LONG"; $Short_Str=showShort($str,4);//截取前面4个汉字,结果为:这个字符... Echo "$Short_Str"; F

asp.net 安全的截取指定长度的html或者ubb字符串_实用技巧

在截取字符串时需要记录每一个标签是否关闭,如果截取到指定长度还有没有关闭的标签,那么我们需要将标签关闭,或者删除掉未关闭的标签.不考虑某些不需要关闭标签的情况,html开始和结束标签总是成对出现的,我们可以遍历输入的字符串,并在标签开始时放入堆栈中,遇到结束标签时从堆栈中弹出一个元素,这样遍历到指定长度,堆栈中留下的标签就是需要补全或者删除掉的标签. 下面是代码实现,如果大家有更好的方法请给出来: 复制代码 代码如下: static char END_SLASH = '/'; /// <summ

.NET截取指定长度汉字超出部分以&amp;quot;...&amp;quot;代替 实例分享_实用技巧

复制代码 代码如下: ///   <summary>    ///   将指定字符串按指定长度进行剪切,    ///   </summary>    ///   <param   name= "oldStr "> 需要截断的字符串 </param>    ///   <param   name= "maxLength "> 字符串的最大长度 </param>    ///   <para

安全的截取指定长度的html或者ubb字符串

在将html代码输出到页面时,有时候会需要截断字符串保留指定长度的字符串,由于html中有些标签 必须成对出现,所以在截取html时需要特别注意,不能因为截断问题把页面搞乱掉. 在截取字符串时需要记录每一个标签是否关闭,如果截取到指定长度还有没有关闭的标签,那么我们 需要将标签关闭,或者删除掉未关闭的标签.不考虑某些不需要关闭标签的情况,html开始和结束标签总 是成对出现的,我们可以遍历输入的字符串,并在标签开始时放入堆栈中,遇到结束标签时从堆栈中弹出 一个元素,这样遍历到指定长度,堆栈中留下

用C#截取指定长度的中英文混合字符串

字符串 我们常做的一件事情,就是在文章系统中,截取一定长度的文章标题,超过指定长度,就加"..." 如两个字符串:string str1 = "中国人要啊abc呀~";string str2 = "1中国人23456abc呀~"; 要截取后,输出: str1 = "中国人要...";str2 = "1中国人2..."; 即要把中英文混合的字符串,在截取后,长度要一致,即8个字节的长度(不包括三个点),而且不