当前位置:  编程技术>php

可以保证单词完整性的PHP英文字符串截取代码分享

    来源: 互联网  发布时间:2014-08-26

    本文导语:  直接上代码: /** * 完整词的截取 * * @param $str * @param $start * @param $length * * @return string */ public static function usubstr($str, $start, $length = null) { // 先正常截取一遍. $res = substr($str, $start, $length); ...

直接上代码:

/**
   * 完整词的截取
   *
   * @param $str
   * @param $start
   * @param $length
   *
   * @return string
   */
  public static function usubstr($str, $start, $length = null)
  {
 
    // 先正常截取一遍.
    $res = substr($str, $start, $length);
    $strlen = strlen($str);
 
    /* 接着判断头尾各6字节是否完整(不残缺) */
    // 如果参数start是正数
    if ($start >= 0) {
      // 往前再截取大约6字节
      $next_start = $start + $length; // 初始位置
      $next_len = $next_start + 6  0 ? $start - 6 : 0;
      $prev_segm = substr($str, $prev_start, $start - $prev_start);
    } // start是负数
    else {
      // 往前再截取大约6字节
      $next_start = $strlen + $start + $length; // 初始位置
      $next_len = $next_start + 6  0 ? $start - 6 : 0;
      $prev_segm = substr($str, $prev_start, $start - $prev_start);
    }
    // 判断前6字节是否符合utf8规则
    if (preg_match('@^([x80-xBF]{0,5})[xC0-xFD]?@', $next_segm, $bytes)) {
      if (!empty($bytes[1])) {
        $bytes = $bytes[1];
        $res .= $bytes;
      }
    }
    // 判断后6字节是否符合utf8规则
    $ord0 = ord($res[0]);
    if (128 = $ord0) {
      // 往后截取 , 并加在res的前面.
      if (preg_match('@[xC0-xFD][x80-xBF]{0,5}$@', $prev_segm, $bytes)) {
        if (!empty($bytes[0])) {
          $bytes = $bytes[0];
          $res = $bytes . $res;
        }
      }
    }
    if (strlen($res) < $strlen) {
      $res = $res . '...';
    }
    return $res;
  }


    
 
 

您可能感兴趣的文章:

  • 网站英文/中文域名字符集即网站英文/中文域名可以包含哪些字符
  • 英文操作系统可以程序里面可以写中文程序吗
  • 急急急!!!fc1下安装fctix,可以出现提示条,但是无法显示汉字,只能显示英文。
  • 我安装的linux时默认语言选择的是中文,又乱码,怎么可以解决?怎么更改默认语言成英文?
  • 我觉得介绍InstallAnyWhere的文档,太少了,请大家介绍一下,英文也可以◎◎◎◎◎◎◎◎
  • 哪有RH9手册下载,中英文都可以
  • 求linux 命令行英文原版教程,服务器管理业可以。
  • f7下可以设置输入法的热键,但是怎么在中英文输入法间切换呢?有快捷键吗?
  • 请问哪里有《Linux 高级编程》下?英文也可以。
  • 请问有什么方法可以汉化Xwindows下的英文软件?
  • 各位仁兄哪有 Linux程序设计(3版)下载! 英文也可以! 多谢了。
  • pdf格式文件,复制内容时,英文部分可以正常复制,中文部分却不可以,谁能解决一下
  • <Thinking In Java>第二版的英文原版大陆是不是有货到了?哪里可以买啊? 多少钱?
  • 请问哪里可以找到JSWDK1.0.1下载?我到java.sun.com找不到,:(我的英文不太好)
  • 求助:新手想要学习linux内核,请问,该看些什么书?(中英文都可以)
  • KDE编程中,编辑器可以输入英文,但中文无法输入,换过输入法,还不行
  • 我在linux下可以看到win2000下ntfs格式中的英文文件夹,可是却看不到中文的,还请高手帮忙.
  • 请问windows2003中文版不支持移动硬盘么?但是英文版是可以的!怎么回事?
  • 我下载了UNIX环境高级编程的源码,可是打开时有错误,怎么才可以打开?还有谁有《UNIX环境高级编程(英文版)》的chm格式的ebook?
  • 在读入文件时,英文可以正常,而中文有的却显示了乱码,请帮助~
  • 请问!X Server下是否可以只截取一个窗口?
  • 怎样截取网页上的applet图形,可以copy到剪贴本或word,excel上?
  • 那个函数可以截取String有效部分 ?
  • 请问,JAVA里有什么可以将一个数字截取到小数点后第二位后的函数么?谢谢
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • shell程序:在大文件中查找特定字符串,但该字符串可以跨行
  • java或者是jsp中处理字符串、时间等的函数在那里可以查到资料?或者他们都是采用对象的方式?那么资料在那里可以查到?
  • 利用grep可以取出某个字符所在文本的一行。那么用什么指令取出某字符串呢?例如:
  • 系统登陆时,login前的字符串,在哪个文件里可以修改??
  • Linux 下有什么命令可以得到 一个字符串 的第n个字母.
  • 使用shell在文本文件中进行字符串搜索问题?shell高手请进,分不够可以再加
  • IP地址数字互转 iis7站长之家
  • 利用grep可以取出某个字符所在文本的一行。那么用什么指令取出某字符串呢?
  • bash中可以用字符串做数组下标吗
  • 如何修改一个新建用户登陆时的自动显示的字符串?以及如何限制这个用户可以执行的命令?
  • 请问:java下有没有方法可以把字符串转变成类型或变量?
  • 请问有什么命令可以判断一个字符串是目录还是文件?
  • 用什么方法,可以把一个String型的字符串赋给JTextField对象?谢谢!
  • 很奇怪,varchar2类型在sql*plus中可以看到正常的字符串,用java读出来却是二进制?
  • 请问,在JAVA中可不可以将字符串付值给一个变量呢?
  • 因为mmap函数返回值是void*类型,是否可以将其强制转换成char*类型,按字符串操作,然后将修改重新写入内存映像即可????
  • *****请教SWING高手,我想让JTree一开始的某个节点处于展开,用的是expandPath(TreePath p),请问如何构造TreePath参数,用字符串可以吗
  • 急!!如何将一可以字符串(如2001.12.12-08.23.21)转换成date型已经long型?
  • asp中的replace可以替换掉掉变量字符串中的字符,在jsp中用什么?请举例.
  • 如何格式一个字符串(请求帮助)(分数不够可以加
  • C++ MultiMaps 成员 max_size():返回可以容纳的最大元素个数
  • 我从网上下载LUNUX然后用盘刻录了可以安装吗?如果可以请告诉我下载地址可以吗?谢谢,我学习用的!谢谢
  • C++ Bitsets 成员 size():返回可以容纳的位的个数
  • tc下可以,gcc下不可以.请告说我,怎样就都可以了
  • C++ Maps 成员 max_size():返回可以容纳的最大元素个数
  • 生产者消费者问题为什么不可以共用一个信号量,如果这个信号量可以设置取值固定为0到N,即当信号量取值为N的时候阻塞进程,是否也可以?
  • 必看!程序员升级之路,看了可以少走很多弯路
  • weblogic可不可以当作jndi服务器使用?如果可以,请问如何管理?
  • 请问用ftp可以不可以把整个目录一起上传。
  • linux可不可以和windows共享??可以的话,该怎么做?
  • 怎样写一个shell,可以查看一个文件的内容,并且有翻页的内容,并可以打印的


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3