Lassen Sie uns vorstellen, wie Sie die benutzerdefinierte PHP-Funktion verwenden, um die Zeichenlänge abzufangen, die wir abfangen möchten, und Auslassungspunkte verwenden, um den überschüssigen Teil zu ersetzen oder auszublenden.
String-Abfangmethode:
//截取字符串长度 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; }
Verwendungsmethode:
$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);
Ausgabe:
看... 看看... 看看... 看看 中英文混合看看hel... 中英文混合看看hello?
Erklärung: Im Allgemeinen beträgt das UTF-8-Format 3 Bytes, während GBK-kompatibles gb2312 im Allgemeinen 2 Bytes beträgt. Oben wird die UTF-8-Codierung als Beispiel verwendet.
Der Ellipsenmodus kann über den dritten Parameter $more ein- und ausgeschaltet werden. Der Standardwert ist true für mit Ellipsen und false für keine Ellipsen.