在编写PHP程序的时候,少不了要用到字符串截取的功能,如果是截取英文或者数字这类字符串还不会有什么问题,但是遇到需要截取中文字符串时,就经常会出现乱码,这乱码的根本原因就是在于英文字符串是占一位占位符,而中文字符串是两位占位符,所以如果在截取字符串之前没有对字符进行判断就直接截取,就会产生乱码,下面给大家分享一个自定义截取字符串的函数:
<?php /** * 中文字符串截取无乱码函数 * $str为目标截取字符串 * $leftstr左边字符 * $rightstr右边字符 */ function csubstr($str,$leftstr,$rightstr) { $start = strrpos($str,$leftstr); if($start===false) return $str; $start = $start + strlen($leftstr); $len = strripos($str,$rightstr); if($len===false) return $str; $strlen = strlen($str); $clen = $start; $tmpstr = ''; for($i=$start;$i<$len;$i++,$clen++) { if ($clen >= $start + $len) break; if(ord(substr($str,$i,1)) > 0xa0){ if ($clen >= $start) $tmpstr .= substr($str,$i,2); $i++; }else { if ($clen >= $start) $tmpstr .= substr($str,$i,1); } } return $tmpstr; } //实例演示 $content = "欢迎来到宝物袋官方网站:http://www.baowudai.cn/,欢迎朋友们收藏。"; echo csubstr($content,"来到","官方");//最后的输出结果为“宝物袋”三个字,无乱码 ?>