Heim >Backend-Entwicklung >PHP-Tutorial >Wie schneide ich UTF-8-Zeichenfolgen in PHP sicher ab und behalte dabei die Wortgrenzen bei?

Wie schneide ich UTF-8-Zeichenfolgen in PHP sicher ab und behalte dabei die Wortgrenzen bei?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-18 16:23:11381Durchsuche

How to Safely Truncate UTF-8 Strings in PHP While Preserving Word Boundaries?

Strings mit UTF-8-Zeichen abschneiden

Problem:
Multibyte-Strings werden auf eine angegebene Zeichenbeschränkung abgeschnitten Während die Beibehaltung von Wortgrenzen in PHP eine Herausforderung sein kann. Bei diesem Problem muss diese Funktionalität mit einer benutzerdefinierten Methode namens truncate() erreicht werden, die sich konsistent mit Multibyte-Zeichen verhalten sollte.

Schritte zur Lösung:

  1. Bestimmen Sie das Maximum Zeichenlänge, indem Sie die Länge der Abschlusszeichenfolge von der gewünschten Maximallänge abziehen.
  2. Stellen Sie sicher, dass die Länge der Zeichenfolge die Maximallänge überschreitet; Geben Sie es unverändert zurück, wenn dies nicht der Fall ist.
  3. Identifizieren Sie das letzte Leerzeichen unterhalb der maximalen Länge, um die Wortgrenze festzulegen.
  4. Schneiden Sie die Zeichenfolge am letzten Leerzeichen oder an der maximalen Länge ab, wenn kein Leerzeichen vorhanden ist existiert.
  5. Hängen Sie die Abschlusszeichenfolge an die abgeschnittene Zeichenfolge an.
  6. Geändert zurückgeben string.

Lösung mit mb_strimwidth():

PHP stellt die Funktion mb_strimwidth() zur Verfügung, die das Abschneiden von Multibyte-Strings verarbeiten kann. Diese Funktion unterliegt jedoch keinen Wortgrenzen. Der folgende Codeausschnitt demonstriert seine Verwendung:

public function truncate($string, $chars = 50, $terminator = ' …')
{
    $maxChars = $chars - strlen($terminator);
    if (mb_strlen($string) <= $maxChars) {
        return $string;
    }

    $lastWhitespace = mb_strrpos(mb_substr($string, 0, $maxChars), ' ');
    if ($lastWhitespace !== false) {
        return mb_substr($string, 0, $lastWhitespace) . $terminator;
    } else {
        return mb_substr($string, 0, $maxChars) . $terminator;
    }
}

Das obige ist der detaillierte Inhalt vonWie schneide ich UTF-8-Zeichenfolgen in PHP sicher ab und behalte dabei die Wortgrenzen bei?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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