文档章节

PHP 截取字符串的函数

东湖畔新家
 东湖畔新家
发布于 2017/05/09 18:53
字数 195
阅读 5
收藏 0
/**
 * 截取字符串的函数
 *
 * @param	string		$str		被截取的字符串
 * @param	int			$length		截取的长度
 * $param	string		$charset	编码设置,utf8,gbk
 *
 * @return  string
 */
function sub_str($str, $length = 0, $charset='utf8') {
	$str = trim($str);
	$strlength = strlen($str);
	$charset = strtolower($charset);//将字符串转化为小写
        $i=0;
	if ($charset == 'utf8') {
		$l = 0;
		
		while ($i < $strlength) {
			if (ord($str{$i}) < 0x80) {//返回字符的 ASCII 码值
				$l++; $i++;
			} else if (ord($str{$i}) < 0xe0) {
				$l++; $i += 2; 
			} else if (ord($str{$i}) < 0xf0) { 
				$l += 2; $i += 3; 
			} else if (ord($str{$i}) < 0xf8) {
				$l += 1; $i += 4; 
			} else if (ord($str{$i}) < 0xfc) { 
				$l += 1; $i += 5; 
			} else if (ord($str{$i}) < 0xfe) { 
				$l += 1; $i += 6; 
			}

			if ($l >= $length) { 
				$newstr = substr($str, 0, $i);
				break;
			}
		}
		if($l < $length) {
			return $str;
		}
	} elseif($charset == 'gbk') {
		if ($length == 0 || $length >= $strlength) {
			return $str;
		}
		while ($i <= $strlength) {
			if (ord($str{$i}) > 0xa0) { 
				$l += 2; $i += 2;
			} else {
				$l++; $i++;
			}

			if ($l >= $length) { 
				$newstr = substr($str, 0, $i);
				break;
			}
		}
	}


	return $newstr;
}

 

本文转载自:http://blog.csdn.net/sblig/article/details/24670051

东湖畔新家
粉丝 1
博文 170
码字总数 31582
作品 0
杭州
后端工程师
私信 提问
mb_substr()----------php

PHP substr()函数可以分割文字,但要分割的文字如果包括中文字符往往会遇到问题,这时可以用mbsubstr()/mbstrcut这个函数,mbsubstr() /mbstrcut的用法与substr()相似,只是在mbsubstr()/mb...

freedonn
2014/09/12
0
0
PHP substr()截取字符串时,中文出现乱码的问题解决

在PHP程序开发中,经常会执行字符串的截取操作,比如输出信息列表时,标题不宜过长,打印文章摘要时,也要执行一系列的字符串截取操作。遇到这些需求时,我们经常会想到使用substr()方法来实...

bengozhong
2016/10/10
13
0
可以处理中文的substr函数

很多时候我们要用到中文字符串截取的功能,光用substr是不够的, 这里给大家贴出一个支持GBK和UTF8两种编码的中文字符串截取函数。 当然,大家也可以只用其中的一部分。 /** CsubStr() - 可以...

Minho
2012/02/08
0
0
php中截取中文字符会出现乱码的问题

php中内置函数substr()可以对指定字符串进行截取,不过,它只对全英文字符串的截取是比较适合的。如果字符串中出现了中文,就有可能导致截取后出现乱码的问题,甚至在一些场景中如json编码的...

码上有春天
2015/04/09
69
0
一个效率更高的全半角字符串截取函数

[原创,转载请注明:[url]http://wfyang.blog.51cto.com[/url]] 现在流传的那几个字符串截取函数,一般都是对字符串进行循环判断,如果要截取的串比较长,效率就成了一个问题。 我解决的办法非...

技术小胖子
2017/11/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Oracle SQL语法实例合集

如需转载请注明出处https://my.oschina.net/feistel/blog/3052024 目的:迅速激活Oracle SQL 参考:《Oracle从入门到精通》 ------------------------------------------------------------......

LoSingSang
58分钟前
1
0
增加 PostgreSQL 服务进程的最大打开文件数

https://serverfault.com/questions/628610/increasing-nproc-for-processes-launched-by-systemd-on-centos-7 要在systemd的配置里加才行...

helloclia
今天
2
0
组合模式在商品分类列表中的应用

在所有的树形结构中最适合的设计模式就是组合模式,我们看看常用商品分类中如何使用。 先定义一个树形结构的商品接口 public interface TreeProduct { List<TreeProduct> allProducts(...

算法之名
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部