欢迎来到宝物袋网站,如果你有宝物想分享给大家的话,请联系我们。注册 | 登录

当前位置:首页 » php » 正文内容

分享一个PHP截取中文字符串无乱码的自定义函数方法

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

?>