php要截取一段汉语文字,怎样才能保证不把汉字拆开?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php要截取一段汉语文字,怎样才能保证不把汉字拆开?相关的知识,希望对你有一定的参考价值。
就是在截取一段文字的一部分作为标题,总会把一个汉字拆开,怎样才能解决这个问题阿
还得看你的编码是gbk的还是UTF8的。以下是UTF-8的编码下的截取
function smarty_modifier_truncate_utf8($string, $length, $etc = '...')
$result = '';
$string = html_entity_decode(trim(strip_tags($string)), ENT_QUOTES, 'UTF-8');
$strlen = strlen($string);
for($i = 0; (($i < $strlen) && ($length > 0)); $i++)
if($number = strpos(str_pad(decbin(ord(substr($string, $i, 1))), 8, '0', STR_PAD_LEFT), '0'))
if($length < 1.0)
break;
$result .= substr($string, $i, $number);
$length -= 1.0;
$i += $number - 1;
else
$result .= substr($string, $i, 1);
$length -= 0.5;
$result = htmlspecialchars($result, ENT_QUOTES, 'UTF-8');
if($i < $strlen)
$result .= $etc;
return $result;
以下是GBK编码下的截取(常用)
function gbk_strlen($string)
if(extension_loaded('mbstring'))
mb_internal_encoding('GBK');
return mb_strlen($string);
else
preg_match_all('/[\x81-\xfe]?./', $string, $match);
return count($match[0]);
function gbk_substr($string, $start, $length = null)
if(extension_loaded('mbstring'))
mb_internal_encoding('GBK');
if(is_null($length))
return mb_substr($string, $start);
else
return mb_substr($string, $start, $length);
else
preg_match_all('/[\x81-\xfe]?./', $string, $match);
if(is_null($length))
return implode('', array_slice($match[0], $start));
else
return implode('', array_slice($match[0], $start, $length));
function smarty_modifier_truncate_gbk($string, $length = 80, $etc = '...',
$break_words = false, $middle = false)
if ($length == 0)
return '';
if (gbk_strlen($string) > $length)
$length -= gbk_strlen($etc);
if (!$break_words && !$middle)
$string = preg_replace('/\s+?(\S+)?$/', '', gbk_substr($string, 0, $length+1));
if(!$middle)
return gbk_substr($string, 0, $length).$etc;
else
return gbk_substr($string, 0, $length/2) . $etc . gbk_substr($string, -$length/2);
else
return $string;
参考技术A 判断 ASCII 的高位 > 128 参考技术B 参考:http://www.readlog.cn/show-180-1.htm
linux 文字终端下输入汉字
谁能教下怎么在Linux的文字终端下输入汉字,前提是我只安装了一个linux的文字终端,没有安装任何的图形界面,所以不要把在图形界面下输入汉字的方法教给我,那个我已经会了,我要的是纯文字终端界面下的!
参考技术A 这个你还是别想了 在字符界面下输入汉字 输入法都无法切换 而且文字终端下 是不支持汉字的 省省吧。 参考技术B 现在有几个方案1 fbterm+ucimf,这个是现在比较活跃的方案,都是新东西。2 zhcon3 cce后两者就比较老,并且对现在常用的utf8的locale支持不太好 参考技术C 通过其他电脑远程SSH 参考技术D 是可以用的!ctrl + 空格键以上是关于php要截取一段汉语文字,怎样才能保证不把汉字拆开?的主要内容,如果未能解决你的问题,请参考以下文章
java算法面试题:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个, 如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该