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

2019-07-19 作者:yzc216.com官网   |   浏览(91)

直接上代码:

本文实例讲述了php简单截取字符串的方法。分享给大家供大家参考,具体如下:

/**
   * 完整词的截取
   *
   * @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 <= $strlen ? 6 : $strlen - $next_start;
      $next_segm = substr($str, $next_start, $next_len);
      // 如果第1字节就不是 完整字符的首字节, 再往后截取大约6字节
      $prev_start = $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 <= $strlen ? 6 : $strlen - $next_start;
      $next_segm = substr($str, $next_start, $next_len);

      // 如果第1字节就不是 完整字符的首字节, 再往后截取大约6字节.
      $start = $strlen   $start;
      $prev_start = $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 && 191 >= $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;
  }
//截取摘要
public static function mbsubstr($str){
  $strleng = mb_strlen($str,"utf8");
  $mbstr = mb_substr($str,0,140,'utf8');
  $strdstr = mb_substr($str,140,$strleng,'utf8');
  $strlengs = mb_strlen($strdstr,'utf8');
  $strc = "";
  for($i=0;$i<$strlengs;$i  ){
    $strn = mb_substr($strdstr,$i,1,'utf8');
    if($strn == "。" || $strn == "?" || $strn == "!"){
      break;
    }
    $strc .= $strn;
  }
  $strd = $mbstr.$strc;
  //echo $strleng."@".mb_strlen($strd,'utf8')."@".$strd."<br>";
  return $strd;
}

您可能感兴趣的文章:

  • php截取中文字符串函数实例
  • php截取字符串函数分享
  • php截取html字符串及自动补全html标签的方法
  • php字符串截取函数用法分析
  • php中文字符串截取方法实例总结
  • php,js,css字符串截取的办法集锦
  • php mb_substr()函数截取中文字符串应用示例
  • php按单词截取字符串的方法

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php字符串(string)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php面向对象程序设计入门教程》、《PHP网络编程技巧总结》、《php mysql数据库操作入门教程》及《php常见数据库操作技巧汇总yzc216.com官网,》

希望本文所述对大家PHP程序设计有所帮助。

您可能感兴趣的文章:

  • PHP中文处理 中文字符串截取(mb_substr)和获取中文字符串字数
  • php字符串截取的简单方法
  • php从右向左/从左向右截取字符串的实现方法
  • Thinkphp模板中截取字符串函数简介
  • php截取中文字符串不乱码的方法
  • php截取指定2个字符之间字符串的方法
  • php获取url字符串截取路径的文件名和扩展名的函数
  • php轻松实现中英文混排字符串截取
  • php读取html并截取字符串的简单代码
  • PHP中使用substr()截取字符串出现中文乱码问题该怎么办
  • php float不四舍五入截取浮点型字符串方法总结
  • PHP 截取字符串专题集合
  • PHP 截取字符串函数整理(支持gb2312和utf-8)
  • php中计算中文字符串长度、截取中文字符串的函数代码
  • php中截取中文字符串的代码小结

本文由yzc216亚洲城发布于yzc216.com官网,转载请注明出处:可以保证单词完整性的PHP英文字符串截取代码分

关键词: yzc216亚洲城 yzc216.com官网