会自动补充的字串截取函数 - 中国WEB开发者网络 (http://www.webasp.net) -- 技术教程 (http://www.webasp.net/article/) --- 会自动补充的字串截取函数 (http://www.webasp.net/article/18/17004.htm) |
| -- 作者:未知 -- 发布日期: 2005-03-15 |
| 会自动补充的字串截取函数
当截取句子时,可能会断在一个单词的中间,如beincity一词被断在了当中,这样有时会不妥,下面这个函数就是用来解决这个问题的,当bDelete=TRUE时,就删除那个被截断的单词(因为我觉得把它删掉比把它补充完整要来得方便)。当然,这个函数支持对中文的操作,当双字节字符被截断时,会自动补充完整。 <? function wordscut($string, $length, $bDelete=FALSE) { if(strlen($string) > $length) { for($i = 0; $i < $length - 3; $i++) { if(ord($string[$i]) > 127) { $wordscut .= $string[$i].$string[$i + 1]; $i++; } else { $wordscut .= $string[$i]; } } ///add if( $i == $length-3 ) { if( $bDelete ) { if(ereg("[0-9a-zA-Z_\.\-]", $string[$i])) { for($j=$i-1; $j>=0; $j--) if(!ereg("[0-9a-zA-Z_\.\-]", $string[$j])) break; $wordscut = substr($wordscut, 0, strlen($wordscut)-($i-$j)+1); } } } /// return $wordscut.' ...'; } return $string; } echo wordscut("Hello,小坚.beincity!", 18, true); echo "<br>"; echo wordscut("123 567 90abcde", 6+3, true); ?> <?//another function SubstrGB($in, $num, $delete=FALSE) file://usage: $short = SubstrGB($yourText, $num, $delete?) { $pos=0; $out=""; while($c = substr($in, $pos, 1)) { if(ord($c) > 127) { $out .= $c; $pos++; $c = substr($in, $pos, 1); $out .= $c; } else { $out .= $c; } $pos++; if($pos >= $num) break; } if($pos == $num) { if( $delete ) { if(ereg("[0-9a-zA-Z_\.\-]", substr($in, $pos, 1))) { for($j = $pos-1; $j >= 0; $j--) if(!ereg("[0-9a-zA-Z_\.\-]", substr($out, $j, 1))) break; $out = substr($out, 0, strlen($out)-($pos-$j)+1); } } } return $out; } ?> 责任编辑: microrain |
| webasp.net |