推荐使用暴力版的, 安全可靠; 温柔版的从程序编写的角度看比较高效. 呵呵基本原理是修正 off, len 可能的错位, 温柔版是从 off 往前倒寻, 寻到第一个/*** @brief 简洁高效的字符串截取函数 (支持 CJK字符)** 只是简单判定了高位部分的ASCII值, 能应付绝大多数正规的中英文混合字符串* 不支持 4字节或3字节的 utf 编码** 要点: 修正双字节中错位的 off 值 / len 值 (注重参数 $len 缺省值为 -1的用意)* 用法和 substr() 一样, 针对 GBK 码的低位(0x40开始)可能有问题*/ function my_substr($str, $off, $len = -1){$mlen = strlen($str);/* 第0步: 参数安全检查与修正 */ if ($off$off = $mlen;if ($off > $mlen)$off = 0;/* 第1步: $off 修正, 倒寻 */ if ($off > 0){$fix = $off;$mb = false;do{$ch = ord($str{$fix--});if ($ch break;$mb = true;}while ($fix);if ($mb){$fix = ($off - $fix);if ($fix & 1){$off--;$len ;}}}/* 第2步: $len 修正, 同上 */ if ($len = $mlen){$len = $mlen - $off;}else{http://www.bkjia.com/PHPjc/445551.html www.bkjia.com true http://www.bkjia.com/PHPjc/445551.html TechArticle推荐使用暴力版的, 安全可靠; 温柔版的从程序编写的角度看比较高效. 呵呵 基本原理是修正 off, len 可能的错位, 温柔版是从 off 往前倒寻...
相关文章
- PHP数据库XML数据导入_PHPXML解析数据库插入步骤
- !(a+b)在c语言中等于什么
- php关闭已打开文件的方法
- c# 如何用 CancellationTokenSource 控制一组任务的超时
- Laravel框架中javascript上传图片到七牛云的案例详解
- mysql 口字符号怎么办
- C++如何获取硬盘分区剩余空间 _ std::filesystem::space用法【实战】
- LAMP鍏勫紵杩?012骞寸涓?瀛e益PHP鍩硅瀛﹁垂浼樻儬鏀跨瓥
- c++中dynamic_cast是什么意思_解析C++中dynamic_cast的作用及使用条件
- php移除字符串左侧的空白字符或其他预定义字符函数ltrim()
