PHP 사용자 정의 함수를 사용하여 가로채고 싶은 문자 길이를 가로채고, 줄임표를 사용하여 남는 부분을 바꾸거나 숨기는 방법을 소개하겠습니다.
문자열 차단 방법:
//截取字符串长度 function cut($Str, $Length,$more=true) { //$Str为截取字符串,$Length为需要截取的长度 global $s; $i = 0; $l = 0; $ll = strlen($Str); $s = $Str; $f = true; while ($i <= $ll) { if (ord($Str{$i}) < 0x80) { $l++; $i++; } else if (ord($Str{$i}) < 0xe0) { $l++; $i += 2; } else if (ord($Str{$i}) < 0xf0) { $l += 2; $i += 3; } else if (ord($Str{$i}) < 0xf8) { $l += 1; $i += 4; } else if (ord($Str{$i}) < 0xfc) { $l += 1; $i += 5; } else if (ord($Str{$i}) < 0xfe) { $l += 1; $i += 6; } if (($l >= $Length - 1) && $f) { $s = substr($Str, 0, $i); $f = false; } if (($l > $Length) && ($i < $ll) && $more) { $s = $s . '...'; break; //如果进行了截取,字符串末尾加省略符号“...” } } return $s; }
사용 방법:
$str = '看看截取到哪里?'; echo cut($str,1); echo '<br>'; echo cut($str,4); echo '<br>'; echo cut($str,5); echo '<br>'; echo cut($str,5,false); echo '<br>'; $str = '中英文混合看看hello?'; echo cut($str,18); echo '<br>'; echo cut($str,50);
출력:
看... 看看... 看看... 看看 中英文混合看看hel... 中英文混合看看hello?
설명: 일반적으로 UTF-8 형식은 3바이트인 반면, GBK 호환 gb2312는 일반적으로 2바이트입니다. 위에서는 UTF-8 인코딩을 예로 사용합니다.
줄임표 모드는 세 번째 매개변수인 $more를 통해 켜거나 끌 수 있습니다. 기본값은 줄임표가 있는 경우 true이고, 줄임표가 없는 경우 false입니다.