php 怎么截取汉字php截取字符串函数?

汇聚1000万达人的兴趣社区下载即送20张免费照片冲印
扫码下载App
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
阅读(12614)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'php 中文字符串截取',
blogAbstract:'直接使用PHP函数substr截取中文字符可能会出现乱码,主要是substr可能硬生生的将一个中文字符“锯”成两半。解决办法:1、使用mbstring扩展库的mb_substr截取就不会出现乱码了。2、自己书写截取函数,但效率不如用mbstring扩展库来得高。3、如果仅是为了输出截取的串,可用如下方式实现:substr($str, 0, 30).chr(0)。=============================substr()函数可以分割文字,但要分割的文字如果包括中文字符往往会遇到问题,这时可以用mb_substr()/mb_strcut这个函数,mb_s',
blogTag:'字符串截取',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:0,
publishTime:2,
permalink:'blog/static/',
commentCount:1,
mainCommentCount:1,
recommendCount:2,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}php字符串截取,支持中文和其他编码-Php高级应用-Php教程-壹聚教程网php字符串截取,支持中文和其他编码本文章总结了在php函数substr的基础上来截取字符串的函数,但在碰到中文时出现汉字截取一半出现乱码的解决办法了,下面介绍了支持中文和其他编码截取程序。
&* 字符串截取,支持中文和其他编码
&* @static
&* @access public
&* @param string $str 需要转换的字符串
&* @param string $start 开始位置
&* @param string $length 截取长度
&* @param string $charset 编码格式
&* @param string $suffix 截断显示字符
&* @return string
msubstr($str, $start=0, $length, $charset=&utf-8&, $suffix=true)
&&& if(function_exists(&mb_substr&))
&&&&&&&& mb_substr($str, $start, $length, $charset);
&&& elseif(function_exists('iconv_substr')) {
&&&&&&&& iconv_substr($str,$start,$length,$charset);
&&& $re['utf-8']&& = &/[x01-x7f]|[xc2-xdf][x80-xbf]|[xe0-xef][x80-xbf]{2}|[xf0-xff][x80-xbf]{3}/&;
&&& $re['gb2312'] = &/[x01-x7f]|[xb0-xf7][xa0-xfe]/&;
&&& $re['gbk']&&& = &/[x01-x7f]|[x81-xfe][x40-xfe]/&;
&&& $re['big5']&& = &/[x01-x7f]|[x81-xfe]([x40-x7e]|xa1-xfe])/&;
&&& preg_match_all($re[$charset], $str, $match);
&&& $slice = join(&&,_slice($match[0], $start, $length));
&&& if($suffix) return $slice.&&&;
&&& return $
如果我们直接使用了来截取数据如
在英文和汉字混合的情况下会出现如下问题:
如果有这样一个字符串
$str=&这是一个字符串&;
为了截取该串的前10个字符,使用
if(strlen($str)&10) $str=substr($str,10).&&&;
那么,echo $str的输出应该是&这是一个字&&
$str=&这是1个字符串&;
这个串中包含了一个半角字符,同样执行:
if(strlen($str)&10) $str=substr($str,10);
由于原字符串$str的第10、11个字符构成了汉字&符&;
执行串分割后会将该汉字一分为二,这样被截取的串就会发现乱码现象
使用了上面这代码字符截取代码就可以方便的解决了这种问题了。
今天找到一个比较好的截取中文字符串方法,在此与大家共享。
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);
&&&&&&&&&&& $i++;
&&&&&&& } else
&&&&&&&&&&& $tmpstr .= substr($str, $i, 1);
&&& return $
程序二: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截取汉字字符串 的文章

 

随机推荐