PHP截取中文字符简要举例

WordPress获取某类文章列表,需要用到PHP截取字符函数,飞龙首先想到用substr,但是发现后面总带着生成的空格,有时还出现乱码。原来substr将一个中文字符“锯”成两半。 本日志修订网址 http://feilong.org/php-mbstring-mbstrcut

一、使用mbstring扩展库的mb_substr截取中文汉字,不出现乱码。不过这需要在php.ini,把php_mbstring.dll打开,也就是去掉前面的注释符号。

<?php echo mb_substr(‘飞龙博客可以为你解忧包括WordPress定制’, 0, 7, ‘utf-8’);?>
输出:飞龙博客可以为

<?php echo mb_strcut(‘飞龙博客可以为你解忧包括WordPress定制’, 0, 7, ‘utf-8′);?>
输出:飞龙博

从上面例子可以看出,mb_substr是按字来切分字符,而mb_strcut是按字节来切分字符,但是都不会产生半个字符的现象。

二、如果服务器不支持mbstring扩展库,又没有修改php.ini权限,那么可以在WordPress主题的functions.php里面,使用如下截取函数。

function ZHsubstr($string, $start, $length) {
if(strlen($string)>$length){
$str=null;
$len=$start+$length;
for($i=$start;$i<$len;$i++){
if(ord(substr($string,$i,1))>0xa0){
$str.=substr($string,$i,2);
$i++;
}else{
$str.=substr($string,$i,1);
}
}
return $str.’…’;//后面并接了省略号
}else{
return $string;
}
}

三、使用举例

1、<?php echo ZHsubstr(‘中文字符串截取没出现空白和乱码’, 0, 21);?>
输出:中文字符串截取…

从上面例子可以看出,一个汉字大概占3个数值。

2、WordPress的文章列表,经常用到的截取字符或汉字的代码:

<a href=”<?php the_permalink() ?>” title=”<?php the_title(); ?>”><?php $feilong = get_the_title($post->ID); $cutfeilong = mb_substr($feilong,0,18,’utf-8′); echo $cutfeilong; ?></a>

发表评论

电子邮件地址不会被公开。 必填项已用*标注