Heim  >  Artikel  >  Backend-Entwicklung  >  Benutzerdefinierte Methode zum Abfangen von PHP-Strings

Benutzerdefinierte Methode zum Abfangen von PHP-Strings

高洛峰
高洛峰Original
2016-10-21 10:27:201014Durchsuche

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 . &#39;...&#39;; 
            break; 
            //如果进行了截取,字符串末尾加省略符号“...”
        }
    }
    return $s;
}

Verwendungsmethode:

$str = &#39;看看截取到哪里?&#39;;
echo cut($str,1);
echo &#39;<br>&#39;;
echo cut($str,4);
echo &#39;<br>&#39;;
echo cut($str,5);
echo &#39;<br>&#39;;
echo cut($str,5,false);
echo &#39;<br>&#39;;
 
$str = &#39;中英文混合看看hello?&#39;;
echo cut($str,18);
echo &#39;<br>&#39;;
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.


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn