根据中文裁减字符串函数的php代码

  次阅读 来源:互联网(转载协议) 2016-03-01 14:39 我要评论(0)

裁减字符串函数有很多,但是根据中文裁减字符串的却很少,在本文将为大家介绍下使用php是如何实现的,感兴趣的朋友不要错过

代码如下:

define(CHARSET, 'UTF-8'); // 系统默认编码

/**

* 根据中文裁减字符串

* @param $string - 字符串

* @param $length - 长度

* @param $doc - 缩略后缀

* @return 返回带省略号被裁减好的字符串

*/

function cutstr( $string, $length, $dot = '...' ) {

if ( strlen( $string ) <= $length ) {

return $string;

}

$pre = chr( 1 );

$end = chr( 1 );

$string = str_replace( array( '&', '"', '<', '>' ), array( $pre . '&' . $end, $pre . '"' . $end, $pre . '<' . $end, $pre . '>' . $end ), $string );

$strcut = '';

if ( strtolower( CHARSET ) == 'utf-8' ) {

$n = $tn = $noc = 0;

while ( $n < strlen( $string ) ) {

$t = ord( $string[$n] );

if ( $t == 9 || $t == 10 || (32 <= $t && $t <= 126) ) {

$tn = 1;

$n++;

$noc++;

} elseif ( 194 <= $t && $t <= 223 ) {

$tn = 2;

$n += 2;

$noc += 2;

} elseif ( 224 <= $t && $t <= 239 ) {

$tn = 3;

$n += 3;

$noc += 2;

} elseif ( 240 <= $t && $t <= 247 ) {

$tn = 4;

$n += 4;

$noc += 2;

} elseif ( 248 <= $t && $t <= 251 ) {

$tn = 5;

$n += 5;

$noc += 2;

} elseif ( $t == 252 || $t == 253 ) {

$tn = 6;

$n += 6;

$noc += 2;

} else {

$n++;

}

if ( $noc >= $length ) {

break;

}

}

if ( $noc > $length ) {

$n -= $tn;

}

$strcut = substr( $string, 0, $n );

} else {

for ( $i = 0; $i < $length; $i++ ) {

$strcut .= ord( $string[$i] ) > 127 ? $string[$i] . $string[++$i] : $string[$i];

}

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 区块链最近太火,但A股多家公司明确表态不考虑涉足

    区块链最近太火,但A股多家公司明确表态不考虑涉足

  • 汤晓鸥:人工智能的中国式文艺复兴

    汤晓鸥:人工智能的中国式文艺复兴

  • 全球陷入"区块链狂热"潮,大规模应用还需等待

    全球陷入"区块链狂热"潮,大规模应用还需等待

  • 马云的新零售?张近东的智慧零售?抑或是刘强东的第四次零售革命?

    马云的新零售?张近东的智慧零售?抑或是刘强东的第四次零售革命?

网友点评网友点评
阅读推荐阅读推荐

算法 任何一个入门的软件开发人员都会听到这句话:算法是软件的灵魂!近年来大火的机器学习即是在算法在人工智能上的集中体现。今日头条通...

据《日本经济新闻》报道,日本东京大学教授稻叶雅幸等人开发出再现日本人骨骼肌肉构造的机器人。机器人各部位的肌肉和骨骼长度与日本人的平...

以奥黛丽-赫本为原型打造的人形机器人索菲娅首次拜访了印度。索菲娅是世界上首位获得公民身份的机器人,她在12月30日出现在了印度理工学院...

在查获现场,代售点电脑旁的一台机器人通过敲击电脑键盘抢票。 广州日报惠州讯 (全媒体记者秦仲阳 通讯员张中铃摄影报道)2018年春运售票已...