在编写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
{
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,"来到","官方");//最后的输出结果为“宝物袋”三个字,无乱码
?>