飞龙博客

飞龙博客 飞龙在天

PHP截取中文字符简要举例

feilong.org 修订于2010-07-12 01:26:06 449 次浏览

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>

更新网址:https://feilong.org/php-mbstring-mbstrcut
最初发布:20100712 01:26:06 feilong.org 于广州

加入收藏夹,查看更方便。

所在分类: wordpress

新作:

旧文:

blog money bui 教程 echarts 教程 eclipse 教程 html css 教程 IT趋势 js 教程 json 教程 mysql 教程 nodejs npm 教程 onblog SQLite 教程 tutorials vscode 教程 wap网站 winpe启动盘 wordpress 主机推荐 书法 前端开发 博客 名企名网 国学 域名注册 常用软件 建站程序 操作系统 教程 数码 无线上网 日记 电子商务 电脑笔记本 网站 网站优化 网站开发 网站推广 网站策划 网络 虚拟现实 默认