设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 手机 数据
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php 截取中文

发布时间:2022-07-07 13:03 所属栏目:121 来源:互联网
导读:?php ?php //截取中文字符串 function mysubstr(str, start, len) { tmpstr = ; strlen = start + len; for(i = 0; i strlen; i++) { if(ord(substr(str, i, 1)) 0xa0) { tmpstr .= substr(str, i, 2); i++; } else tmpstr .= substr(str, i, 1); } return t
  <?php
 
  < ?php
 
  //截取中文字符串
 
  function mysubstr(str, start, len) {
 
  tmpstr = "";
 
  strlen = start + len;
 
  for(i = 0; i < strlen; i++) {
 
  if(ord(substr(str, i, 1)) > 0xa0) {
 
  tmpstr .= substr(str, i, 2);
 
  i++;
 
  } else
 
  tmpstr .= substr(str, i, 1);
 
  }
 
  return tmpstr;
 
  }
 
  ?>
 
  2. 截取utf8编码的多字节字符串
 
  <?php
 
  < ?php
 
  //截取utf8字符串
 
  function utf8Substr(str, from, len)
 
  {
 
  return preg_replace('#^(?:[/x00-/x7F]|[/xC0-/xFF][/x80-/xBF]+){0,'.from.'}'.
 
  '((?:[/x00-/x7F]|[/xC0-/xFF][/x80-/xBF]+){0,'.len.'}).*#s',
 
  '1',str);
 
  }
 
  ?>
 
  3. UTF-8、GB2312都支持的汉字截取函数
 
  <?php
 
  < ?php
 
  /*
 
  Utf-8、gb2312都支持的汉字截取函数
 
  cut_str(字符串, 截取长度, 开始长度, 编码);
 
  编码默认为 utf-8
 
  开始长度默认为 0
 
  */
 
  function cut_str(string, sublen, start = 0, code = 'UTF-8')
 
  {
 
  if(code == 'UTF-8')
 
  {
 
  pa = "/[/x01-/x7f]|[/xc2-/xdf][/x80-/xbf]|/xe0[/xa0-/xbf][/x80-/xbf]|[/xe1-/xef][/x80-/xbf][/x80-/xbf]|/xf0[/x90-/xbf][/x80-/xbf][/x80-/xbf]|[/xf1-/xf7][/x80-/xbf][/x80-/xbf][/x80-/xbf]/";
 
  preg_match_all(pa, string, t_string);
 
  if(count(t_string[0]) - start > sublen) return join('', array_slice(t_string[0], start, sublen))."...";
 
  return join('', array_slice(t_string[0], start, sublen));
 
  }
 
  else
 
  {
 
  start = start*2;
 
  sublen = sublen*2;
 
  strlen = strlen(string);
 
  tmpstr = '';
 
  for(i=0; i< strlen; i++)
 
  {
 
  if(i>=start && i< (start+sublen))
 
  {
 
  if(ord(substr(string, i, 1))>129)
 
  {
 
  tmpstr.= substr(string, i, 2);
 
  }
 
  else
 
  {
 
  tmpstr.= substr(string, i, 1);
 
  }
 
  }
 
  if(ord(substr(string, i, 1))>129) i++;
 
  }
 
  if(strlen(tmpstr)< strlen ) tmpstr.= "...";
 
  return tmpstr;
 
  }
 
  }
 
  str = "abcd需要截取的字符串";
 
  echo cut_str(str, 8, 0, 'gb2312');
 
  ?>
 
  4. BugFree 的字符截取函数
 
  <?php
 
  < ?php
 
  /**
 
  * @package BugFree
 
  * @version Id: FunctionsMain.inc.php,v 1.32 2005/09/24 11:38:37 wwccss Exp
 
  *
 
  *
 
  * Return part of a string(Enhance the function substr())
 
  *
 
  * @author Chunsheng Wang <wwccss@263.net>
 
  * @param string String the string to cut.
 
  * @param int Length the length of returned string.
 
  * @param booble Append whether append "...": false|true
 
  * @return string the cutted string.
 
  */
 
  function sysSubStr(String,Length,Append = false)
 
  {
 
  if (strlen(String) < = Length )
 
  {
 
  return String;
 
  }
 
  else
 
  {
 
  I = 0;
 
  while (I < Length)
 
  {
 
  StringTMP = substr(String,I,1);
 
  if ( ord(StringTMP) >=224 )
 
  {
 
  StringTMP = substr(String,I,3);
 
  I = I + 3;
 
  }
 
  elseif( ord(StringTMP) >=192 )
 
  {
 
  StringTMP = substr(String,I,2);
 
  I = I + 2;
 
  }
 
  else
 
  {
 
  I = I + 1;
 
  }
 
  StringLast[] = StringTMP;
 
  }
 
  StringLast = implode("",StringLast);
 
  if(Append)
 
  {
 
  StringLast .= "...";
 
  }
 
  return StringLast;
 
  }
 
  }
 
  String = "CodeBit.cn -- 简单、精彩、通用";
 
  Length = "18";
 
  Append = false;
 
  echo sysSubStr(String,Length,Append);
 
  ?>.
 
  
 

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读