可以保证单词完整性的PHP英文字符串截取代码分享
2015-01-24信息快讯网
这篇文章主要介绍了可以保证单词完整性的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提取字符串中网站url地址的方法
PHP间隔一段时间执行代码的方法
PHP清除字符串中所有无用标签的方法
php查找字符串出现次数的方法
PHP中strtr字符串替换用法详解
php中数字、字符与对象判断函数用法实例
php字符串截取函数用法分析
ThinkPHP控制器里javascript代码不能执行的解决方法
基于递归实现的php树形菜单代码
PHP调用wsdl文件类型的接口代码分享
php一行代码获取文件后缀名实例分析
CI框架入门示例之数据库取数据完整实现方法
smarty中英文多编码字符截取乱码问题解决方法
php中文字符串截取方法实例总结
php分页函数完整实例代码
PHP实现视频文件上传完整实例
php mb_substr()函数截取中文字符串应用示例
一个简洁实用的PHP缓存类完整实例
ThinkPHP使用PHPExcel实现Excel数据导入导出完整实例
Linux下手动编译安装PHP扩展的例子分享
PHP魔术引号所带来的安全问题分析
php中的四舍五入函数代码(floor函数、ceil函数、round与intval)
兼容ie6浏览器的php下载文件代码分享
PHP获取客户端真实IP地址的5种情况分析和实现代码
PHP生成短网址的3种方法代码实例
PHP中对各种加密算法、Hash算法的速度测试对比代码
PHP数字和字符串ID互转函数(类似优酷ID)
ThinkPHP的截取字符串函数无法显示省略号的解决方法
PHP判断表单复选框选中状态完整例子
php对包含html标签的字符串进行截取的函数分享
PHP安全的URL字符串base64编码和解码
PHP中的多行字符串传递给JavaScript的两种方法
Thinkphp模板中截取字符串函数简介
php截取字符串函数substr,iconv_substr,mb_substr示例以及优劣分析
php 购物车完整实现代码
CI框架开发新浪微博登录接口源码完整版
php轻松实现中英文混排字符串截取