当前位置: 首页 > 编程笔记 >

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

党博超
2023-03-14
本文向大家介绍可以保证单词完整性的PHP英文字符串截取代码分享,包括了可以保证单词完整性的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;
  }
 类似资料:
  • 本文向大家介绍php简单截取字符串代码示例,包括了php简单截取字符串代码示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php简单截取字符串的方法。分享给大家供大家参考,具体如下: 更多关于PHP相关内容感兴趣的读者可查看本站专题:《php字符串(string)用法总结》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php面

  • 本文向大家介绍php按单词截取字符串的方法,包括了php按单词截取字符串的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php按单词截取字符串的方法。分享给大家供大家参考。具体分析如下: 这里指定字符串和单词数量进行截取 希望本文所述对大家的php程序设计有所帮助。

  • 本文向大家介绍Python实现统计英文单词个数及字符串分割代码,包括了Python实现统计英文单词个数及字符串分割代码的使用技巧和注意事项,需要的朋友参考一下 字符串分割 结果 统计英文单词的个数的python代码

  • 本文向大家介绍PHP指定截取字符串中的中英文或数字字符的实例分享,包括了PHP指定截取字符串中的中英文或数字字符的实例分享的使用技巧和注意事项,需要的朋友参考一下 我们在开发过程中,经常会碰到截取中文英文数字等的问题,大家知道中文所占的字符和英文数字是不同的;然后我们就会在项目的common里写一些日常的函数包含时间计算转换和中英文字符截取的函数;比如截取中英文的函数没个几行代码恐怕拿不下来的吧,

  • 本文向大家介绍php截取字符串函数分享,包括了php截取字符串函数分享的使用技巧和注意事项,需要的朋友参考一下 经常看到有新手问PHP有没有类似asp的left函数或right函数,实现截取某字符串左边或右边开始N个字符的函数。答案当然是有的。PHP中的substr函数就可以做的到,只不过PHP把二个函数合二为一了,这里再给大家分享一个更加优秀的截取字符串的函数。 以上就是本文的全部内容,希望大家

  • 问题内容: 我正在编写一段代码,例如,如果我有,我只需要查找完整的单词 并且我正在搜索“ t”,那么我应该找不到任何单词。 谁能告诉我如何用Java编写这样的程序? 问题答案: 我将正则表达式用于此类任务。在您的情况下,它应如下所示: 简短说明: 。匹配任何字符,*?是 零次或多次 ,\ b是 单词边界 。 有关正则表达式的更多信息,请参见此处或专门针对Java 。