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要截取一段汉语文字,怎样才能保证不把汉字拆开?的主要内容,如果未能解决你的问题,请参考以下文章

如何将Unicode转换成汉语

怎样将php里的汉字字符串分割成单个字符

java算法面试题:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串,但要保证汉字不被截取半个, 如“我ABC”,4,应该截取“我AB”,输入“我ABC汉DEF”,6,应该

linux 文字终端下输入汉字

php 汉字转拼音

Atian inputmethod 输入法解决方案 方言与多语言多文字支持 英语汉字汉语阿拉伯文的支持 (au