Function ssubstr ($ string, $ length, $ dot = '...'){
Global $ charset;
If (strlen ($ string) <= $ length ){
Return $ string;
}
$ String = str_replace (array ('& amp;', '& quot;', '& lt;', '& gt;'), array ('&', '"', '<', '>'), $ 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]) & gt; 127? $ String [$ I]. $ string [++ $ I]: $ string [$ I];
}
}
$ Strcut = str_replace (array ('&', '"', '<', '>'), array ('& amp;', '& quot ;', '& lt;', '& gt;'), $ strcut );
Return $ strcut. $ dot;
}
Truncate a string of a certain length (this function is valid for gb2312)
<?
Function wordscut ($ string, $ length, $ sss = 0 ){
If (strlen ($ string)> $ length ){
If ($ sss ){
$ Length = $ length-3;
$ Addstr = @#...@#;
}
For ($ I = 0; $ I <$ length; $ I ++ ){
If (ord ($ string [$ I])> 127 ){
$ Wordscut. = $ string [$ I]. $ string [$ I + 1]; //
$ I ++;
} Else {
$ Wordscut. = $ string [$ I];
}
}
Return $ wordscut. $ addstr;
}
Return $ string;
}
?>