PHP substr이 한자의 절반을 잘못된 문자로 자르는 문제에 대한 솔루션
풀어 주다: 2016-07-25 08:58:42
-
- /**
- * 改进的substr
- * edit bbs.it-home.org
- */
- function getstr($string, $length, $encoding = 'utf-8') {
- $string = trim($string);
- if($length && strlen($string) > $length) {
- //截断字符
- $wordscut = '';
- if(strtolower($encoding) == 'utf-8') {
- //utf8编码
- $n = 0;
- $tn = 0;
- $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;
- }
- $wordscut = substr($string, 0, $n);
- } else {
- for($i = 0; $i < $length - 1; $i ) {
- if(ord($string[$i]) > 127) {
- $wordscut .= $string[$i].$string[$i 1];
- $i ;
- } else {
- $wordscut .= $string[$i];
- }
- }
- }
- $string = $wordscut;
- }
- return trim($string);
- }
- ?>
复制代码
|
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31