可以保证单词完整性的PHP英文字符串截取代码分享
2014-07-15 00:00
519 查看
直接上代码:
/** * 完整词的截取 * * @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 截取中文字符串的代码分享
- 回复:String中如果有中文,如何保证length()返回的长度 在 Java 中字符串是以 Unicode 方式编码的,所以,无论中英文都算的长度为 1。根据你的描述,估计是想要取得英文长度为 1 中文长度为 2 的总长度吧。这个,理论上可以构造 An
- 共享:在UTF-8编码情况下PHP截取中文字符串的代码
- 详解PHP截取中文字符串的具体代码实现
- php截取字符串方法, 让英文,中文,中英文混合差不多长
- php实现可以设置中奖概率的抽奖程序代码分享
- php读取html并截取字符串的简单代码
- PHP中英混合字符串截取的函数代码
- php中高性能中文字符串截取函数分享
- 支持中文和其他编码的php截取字符串函数分享(截取中文字符串)
- php中截取中文字符串的代码小结
- php截取字符串比较有用的。中英文都可以
- PHP截取UTF8字符串 utf-8 可以能占一个字符 二个字符 或者三个字符
- PHP分页、防止英文单词被截段、去除HTML代码
- PHP中的字符串截取函数,取子符串,以保证中文不出现乱码
- php中计算中文字符串长度、截取中文字符串的函数代码
- php截取字符串并保留完整xml标签的函数代码
- PHP截取中英文混合字符串中的英文
- php实现可以设置中奖概率的抽奖程序代码分享