Heim > Backend-Entwicklung > PHP-Tutorial > Wie kann ich Multibyte-Strings präzise abschneiden und dabei die Wortgrenzen beibehalten?

Wie kann ich Multibyte-Strings präzise abschneiden und dabei die Wortgrenzen beibehalten?

Linda Hamilton
Freigeben: 2024-12-07 15:01:15
Original
625 Leute haben es durchsucht

How Can I Precisely Truncate Multibyte Strings While Maintaining Word Boundaries?

Multibyte-Zeichenfolgen mit Präzision abschneiden

Einführung

Das Abschneiden von Zeichenfolgen auf eine bestimmte Zeichenlänge ist eine häufige Aufgabe in der Programmierung. Bei Multibyte-Strings, die Zeichen unterschiedlicher Breite enthalten können, wird es jedoch komplexer. Diese Frage befasst sich mit den Nuancen des Abschneidens von Multibyte-Zeichenfolgen unter Beibehaltung von Wortgrenzen.

PHPs mb_strimwidth-Funktion

Wie in der Antwort vorgeschlagen, stellt PHP eine praktische Funktion namens mb_strimwidth( ), der das Abschneiden von Multibyte-Zeichenfolgen behandelt. Als Argumente werden die Zeichenfolge, die gewünschte Breite und ein optionales Abschlusszeichen benötigt. Diese Funktion berücksichtigt jedoch keine Wortgrenzen.

Benutzerdefinierter Kürzungsalgorithmus

Um eine Wortgrenzenkürzung zu erreichen, kann ein benutzerdefinierter Algorithmus verwendet werden:

function truncate($string, $chars = 50, $terminator = ' …') {
    // Calculate the maximum length considering the terminator
    $max_length = $chars - mb_strlen($terminator);

    // Short circuit for strings shorter than the maximum length
    if (mb_strlen($string) <= $max_length) {
        return $string;
    }

    // Find the last space character within the maximum length
    $last_space_index = mb_strrpos($string, ' ', $max_length);

    // Cut the string at the last space or at the maximum length if no last space is found
    $truncated_string = (false !== $last_space_index)
        ? mb_substr($string, 0, $last_space_index)
        : mb_strimwidth($string, 0, $chars);

    // Append the terminator
    $truncated_string .= $terminator;

    return $truncated_string;
}
Nach dem Login kopieren

Diese Funktion implementiert die in der Frage beschriebenen Schritte:

  1. Berechnen Sie das Maximum Länge.
  2. Überprüfen Sie, ob die Zeichenfolge länger als die maximale Länge ist.
  3. Suchen Sie das letzte Leerzeichen unterhalb der maximalen Länge.
  4. Schneiden Sie die Zeichenfolge entsprechend ab.
  5. Fügen Sie das Abschlusszeichen hinzu.
  6. Geben Sie das abgeschnittene Zeichen zurück string.

Demonstration

Der folgende Code demonstriert die Verwendung der benutzerdefinierten Kürzungsfunktion:

$in = "Answer to the Ultimate Question of Life, the Universe, and Everything.";
$out = truncate($in, 50, ' …');

echo $out; // "Answer to the Ultimate Question of Life, the …"
Nach dem Login kopieren

Schlussfolgerung

Die PHP-Funktion mb_strimwidth() bietet eine einfache Möglichkeit dazu schneidet Multibyte-Strings ab, berücksichtigt jedoch keine Wortgrenzen. Durch die Implementierung eines benutzerdefinierten Algorithmus können wir eine präzisere Kürzung erreichen, die die Integrität der Wortgrenzen bewahrt.

Das obige ist der detaillierte Inhalt vonWie kann ich Multibyte-Strings präzise abschneiden und dabei die Wortgrenzen beibehalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage