ps游戏软件有哪些 关于ps动画制作软件游戏设计专业的问题提问

更为方便的字符串截断+省略号:subtext() - ThinkPHP框架
更为简化的调用,并且更少的判断,更快的速度。ThinkPHP 官方扩展的 msubstr 方法其实挺好的,但有以下几个问题:
1,调用的时候会多次判断,包括2次判断是否自带了 mb_substr 和 iconv_substr 函数;
2,无论是否超出长度,如果有 $suffix=true 都会追加省略号,这个不太合理;
介于以上两点,并且在确保自己的服务器支持 mb_substr 函数、并且都是 utf-8 编码的情况下,我们其实可以自己在 Common/common.php(3.2 版本中为 function.php) 中自己添加一个 subtext 的函数,代码如下:function&subtext($text,&$length)
&&&&if(mb_strlen($text,&'utf8')&&&$length)&
&&&&return&mb_substr($text,&0,&$length,&'utf8').'...';
&&&&return&$
}这样在模版中调用的话,只需要用 {$vo.title|subtext=10} 这样即可,同时实现了,如果没超出长度,则不追加省略号的效果。
好吧,这篇文章其实有点卖萌了,稍微熟悉 PHP 的都会这么做
(??ω?)?? 撒花
积分:1464
ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。10260人阅读
PHP技术(98)
经常看到有新手问PHP有没有类似asp的left函数或right函数,实现截取某字符串左边或右边开始N个字符的函数。答案当然是有的。PHP中的substr函数就可以做的到,只不过PHP把二个函数合二为一了。
现在整理了一下substr函数的用法,做了几个例子以解新人之惑,高手请飘过。
我们先来看一下PHP substr函数的语法:
string substr(string string, int start, int [length])
参数string为要操作的字符串
参数start为你要截取的字符串的开始位置,若start为负数时,则表示从倒数第start开始截取length个字符
可选参数length为你要截取的字符串长度,若在使用时不指定则默认取到字符串结尾。若length为负数时,则表示从start开始向右截取到末尾倒数第length个字符的位置
起初用这个函数时可能感觉到别扭,不过你要是把PHP substr函数的语法搞懂了,那他的功能比asp中的left和right,有过之无不及,非常好用。下面我们举例来看他的用法:
1、从第4个字符开始截取到字符串末尾,类似asp中的left:
&?php $str = &&; echo substr($str,4); ?&
2、PHP substr函数从右边截取3个字符,类似asp中的right:
&?php $str = &&; echo substr($str,-3); ?&
3、PHP substr函数从第4个字符开始截取3个字符:
&?php $str = &&; echo substr($str,4,3); ?&
4、有时我们知道一个字符串的开始和结尾,中间是不定长的字符,这时除了用PHP substr函数的正则外我们还可以用substr实现(当然要得到中间的字符方法有N种,在此只是举例substr的应用):
本例去掉开头4个字符和结尾3个字符,输出中间的字符串:
&?php $str = &&; echo substr($str,4,-3); ?&
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:486842次
积分:5894
积分:5894
排名:第3630名
原创:182篇
转载:24篇
评论:51条
(1)(8)(1)(29)(12)(3)(6)(2)(27)(11)(7)(8)(13)(2)(8)(8)(12)(10)(13)(4)(1)(3)(2)(15)PHP截取中文字符串方法总结
来源:易贤网&& 阅读:1563 次&&日期:
温馨提示:易贤网小编为您整理了“PHP截取中文字符串方法总结”,方便广大网友查阅!
程序一:PHP截取中文字符串方法
由于网站首页以及vTigerCRM里经常在截取中文字符串时出现乱码(使用substr),今天找到一个比较好的截取中文字符串方法,在此与大家共享。
function msubstr($str, $start, $len) {
$tmpstr = "";
$strlen = $start + $
for($i = 0; $i & $ $i++) {
if(ord(substr($str, $i, 1)) & 0xa0) {
$tmpstr .= substr($str, $i, 2);
$tmpstr .= substr($str, $i, 1);
程序二:PHP截取UTF-8字符串,解决半字符问题
/******************************************************************
* PHP截取UTF-8字符串,解决半字符问题。
* 英文、数字(半角)为1字节(8位),中文(全角)为3字节
* @return 取出的字符串, 当$len小于等于0时, 会返回整个字符串
* @param $str 源字符串
* $len 左边的子串的长度
****************************************************************/
function utf_substr($str,$len)
for($i=0;$i&$$i++)
$temp_str=substr($str,0,1);
if(ord($temp_str) & 127)
if($i&$len)
$new_str[]=substr($str,0,3);
$str=substr($str,3);
$new_str[]=substr($str,0,1);
$str=substr($str,1);
return join($new_str);
php utf-8 字符串截取
function cutstr($string, $length) {
preg_match_all("/[x01-x7f]|[xc2-xdf][x80-xbf]|xe0[xa0-xbf][x80-xbf]|[xe1-xef][x80-xbf][x80-xbf]|xf0[x90-xbf][x80-xbf][x80-xbf]|[xf1-xf7][x80-xbf][x80-xbf][x80-xbf]/", $string, $info);
for($i=0; $i
$wordscut .= $info[0][$i];
$j = ord($info[0][$i]) & 127 ? $j + 2 : $j + 1;
if ($j & $length - 3) {
return $wordscut." ...";
return join('', $info[0]);
$string="242432反对感是456犯得上广泛大使馆地方7890";
for($i=0;$i
echo cutstr($string,$i)."
截取utf-8字符串函数
为了支持多语言,数据库里的字符串可能保存为UTF-8编码,在网站开发中可能需要用php截取字符串的一部分。为了避免出现乱码现象,编写如下的UTF-8字符串截取函数
关于utf-8的原理请看 UTF-8 FAQ
UTF-8编码的字符可能由1~3个字节组成, 具体数目可以由第一个字节判断出来。(理论上可能更长,但这里假设不超过3个字节)
第一个字节大于224的,它与它之后的2个字节一起组成一个UTF-8字符
第一个字节大于192小于224的,它与它之后的1个字节组成一个UTF-8字符
否则第一个字节本身就是一个英文字符(包括数字和一小部分标点符号)。
以前为某网站设计的代码(也是现在用在首页的长度截取的函数)
//$sourcestr 是要处理的字符串
//$cutlength 为截取的长度(即字数)
function cut_str($sourcestr,$cutlength)
$returnstr='';
$str_length=strlen($sourcestr);//字符串的字节数
while (($n&$cutlength) and ($i&=$str_length))
$temp_str=substr($sourcestr,$i,1);
$ascnum=Ord($temp_str);//得到字符串中第$i位字符的ascii码
if ($ascnum&=224) //如果ASCII位高与224,
$returnstr=$returnstr.substr($sourcestr,$i,3); //根据UTF-8编码规范,将3个连续的字符计为单个字符
$i=$i+3; //实际Byte计为3
$n++; //字串长度计1
elseif ($ascnum&=192) //如果ASCII位高与192,
$returnstr=$returnstr.substr($sourcestr,$i,2); //根据UTF-8编码规范,将2个连续的字符计为单个字符
$i=$i+2; //实际Byte计为2
$n++; //字串长度计1
elseif ($ascnum&=65 && $ascnum&=90) //如果是大写字母,
$returnstr=$returnstr.substr($sourcestr,$i,1);
$i=$i+1; //实际的Byte数仍计1个
$n++; //但考虑整体美观,大写字母计成一个高位字符
else //其他情况下,包括小写字母和半角标点符号,
$returnstr=$returnstr.substr($sourcestr,$i,1);
$i=$i+1; //实际的Byte数计1个
$n=$n+0.5; //小写字母和半角标点等与半个高位字符宽...
if ($str_length&$cutlength){
$returnstr = $returnstr . "...";//超过长度时在尾处加上省略号
截取utf-8字符串函数
function FSubstr($title,$start,$len="",$magic=true)
if($len == "") $len=strlen($title);
if($start != 0)
$startv = ord(substr($title,$start,1));
if($startv &= 128)
if($startv & 192)
for($i=$start-1;$i&0;$i--)
$tempv = ord(substr($title,$i,1));
if($tempv &= 192)
$start = $i;
if(strlen($title)&=$len) return substr($title,$start,$len);
$alen = 0;
$blen = 0;
$realnum = 0;
for($i=$$i
$ctype = 0;
$cstep = 0;
$cur = substr($title,$i,1);
if($cur == "&")
if(substr($title,$i,4) == "&")
$cstep = 4;
$length += 4;
$realnum ++;
if($magic)
else if(substr($title,$i,4) == "&")
$cstep = 4;
$length += 4;
$realnum ++;
if($magic)
else if(substr($title,$i,5) == "&")
$cstep = 5;
$length += 5;
$realnum ++;
if($magic)
else if(substr($title,$i,6) == """)
$cstep = 6;
$length += 6;
$realnum ++;
if($magic)
else if(preg_match("/&#(d+);?/i",substr($title,$i,8),$match))
$cstep = strlen($match[0]);
$length += strlen($match[0]);
$i += strlen($match[0])-1;
$realnum ++;
if($magic)
$ctype = 1;
if(ord($cur)&=252)
$cstep = 6;
$length += 6;
$realnum ++;
if($magic)
$ctype = 1;
}elseif(ord($cur)&=248){
$cstep = 5;
$length += 5;
$realnum ++;
if($magic)
$ctype = 1;
}elseif(ord($cur)&=240){
$cstep = 4;
$length += 4;
$realnum ++;
if($magic)
$ctype = 1;
}elseif(ord($cur)&=224){
$cstep = 3;
$length += 3;
$realnum ++;
if($magic)
$ctype = 1;
}elseif(ord($cur)&=192){
$cstep = 2;
$length += 2;
$realnum ++;
if($magic)
$ctype = 1;
}elseif(ord($cur)&=128){
$length += 1;
$cstep = 1;
$length +=1;
$realnum ++;
if($magic)
if(ord($cur) &= 65 && ord($cur) &= 90)
if($magic)
if(($blen*2+$alen) == ($len*2))
if(($blen*2+$alen) == ($len*2+1))
if($ctype == 1)
$length -= $
if($realnum == $len)
unset($cur);
unset($alen);
unset($blen);
unset($realnum);
unset($ctype);
unset($cstep);
return substr($title,$start,$length);
更多信息请查看
更多信息请查看
【】&&&&&【点此处查询各地各类考试咨询QQ号码及交流群】
易贤网手机网站地址:
由于各方面情况的不断调整与变化,易贤网提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
相关阅读 & & &
&nbsp&nbsp&nbsp &nbsp&nbsp&nbsp会员注册
本站不参与评论!()
自觉遵守:爱国、守法、自律、真实、文明的原则
尊重网上道德,遵守中华人民共和国各项有关法律法规
严禁发表危害国家安全,破坏民族团结、国家宗教政策和社会稳定,含侮辱、诽谤、教唆、淫秽等内容的评论
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
您在本站发表的评论,本站有权保留、转载、引用或者删除
参与本评论即表明您已经阅读并接受上述条款提到中英文混排计数、截取,大家首先想到的是ascii、16进制、正则匹配、循环计数。
今天我给大家分享的是php的mb扩展,教你如何轻松处理字符串。
先给大家介绍用到的函数:
mb_strwidth($str, $encoding) 返回字符串的宽度
$str 要计算的字符串
$encoding 要使用的编码,如 utf8、gbk
mb_strimwidth($str, $start, $width, $tail, $encoding) 按宽度截取字符串
$str 要截取的字符串
$start 从哪个位置开始截取,默认是0
$width 要截取的宽度
$tail 追加到截取字符串后边的字符串,常用的是 ...
$encoding 要使用的编码
下边给大家实例演示:
* utf8 编码格式
* 1个中文占用3个字节
* 我们希望的是1个中文占用2个字节,
* 因为从宽度上看2个英文字母占用的位置相当于1个中文
// 测试字符串
$str = 'aaaa啊啊aaaa啊啊啊aaa';
echo strlen($str); // 只用strlen输出为25个字节
// 必须指定编码,不然会使用php的内码 mb_internal_encoding()可以查看内码
// 使用mb_strwidth输出字符串的宽度为20使用utf8编码
echo mb_strwidth($str, 'utf8');
// 只有宽度大于10才截取
if(mb_strwidth($str, 'utf8')&10){
// 此处设定从0开始截取,取10个追加...,使用utf8编码
// 注意追加的...也会被计算到长度之内
$str = mb_strimwidth($str, 0, 10, '...', 'utf8');
// 最后输出 aaaa啊... 4个a算4个 1个啊算2个 3个点算3个 4+2+3=9
// 是不是很简单啊,有的人说了为什么是9个不是10个吗?
// 因为正好&啊&的后边还是&啊&,中文算2个,9+2=11 超出了设定,所以去掉1个就是9了
echo $str;
下边再给大家介绍一些其它函数吧:
mb_strlen($str, $encoding) 返回字符串的长度
$str 要计算的字符串
$encoding 使用的编码
mb_substr($str, $start, $length, $encoding) 截取字符串
$str 要截取的字符串
$start 从哪里开始截取
$length 截取多长
$encoding 使用的编码
其实这2个函数和strlen()、substr()很像,唯一的不同就是可以设定编码。
下边上实例:
* utf8 编码格式
* 1个中文占用3个字节
$str = 'aa12啊aa';
echo strlen($str); // 直接输出长度为9
// 输出长度为7,为什么是7呢?
// 注意这里设定编码以后,不管是中文还是英文每个长度都为1
// a a 1 2 啊 a a
// 1+1+1+1+1+1+1 = 7
// 是不是正好7个字符啊
echo mb_strlen($str, 'utf8');
// 同样mb_substr也是一样的
// 我现在只想要5个字符
echo mb_substr($str, 0, 5, 'utf8'); // 输出 aa12啊
其实mb扩展里边很有很多好用的函数,这里就不给大家一一列举。
有兴趣的朋友可以查看
好了,今天就先介绍到这里了。
阅读(...) 评论()}

我要回帖

更多关于 动画专业软件有哪些 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信