Heim > Backend-Entwicklung > PHP-Tutorial > Wie kann ich Strings in PHP kürzen und gleichzeitig Wortgrenzen beibehalten?

Wie kann ich Strings in PHP kürzen und gleichzeitig Wortgrenzen beibehalten?

Barbara Streisand
Freigeben: 2024-12-10 20:20:11
Original
308 Leute haben es durchsucht

How Can I Truncate Strings in PHP While Preserving Word Boundaries?

Aufrechterhaltung der semantischen Integrität: Abschneiden von Zeichenfolgen an der engsten Wortgrenze

Beim Umgang mit Zeichenfolgen in der Programmierung ist es häufig erforderlich, diese auf eine bestimmte Länge zu kürzen. Das naive Abschneiden von Zeichen kann jedoch zu unangenehmen oder falschen Ergebnissen führen, insbesondere wenn die Kürzung mitten im Wort erfolgt.

In PHP haben wir einige Optionen zum Abschneiden von Zeichenfolgen unter Wahrung der semantischen Integrität.

Wordwrap und Substring verwenden

Die Wordwrap-Funktion kann eine Zeichenfolge unter Berücksichtigung der Wortgrenzen in mehrere Zeilen aufteilen. Durch die Angabe einer maximalen Breite können wir einen Zeilenumbruch beim nächsten Wort vor der gewünschten Länge erstellen. Der folgende Codeausschnitt demonstriert diesen Ansatz:

$string = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.";
$desired_width = 200;

$truncated_string = substr($string, 0, strpos(wordwrap($string, $desired_width), "\n"));
Nach dem Login kopieren

Jetzt enthält $truncated_string den gewünschten Text, jedoch nur bis zum Ende des letzten Wortes vor dem 200. Zeichen.

Umgang mit Randfällen

Dieser Ansatz funktioniert gut, behandelt jedoch nicht den Fall, dass die ursprüngliche Zeichenfolge kürzer als die gewünschte Breite ist. Um dies zu beheben, können wir die Logik in eine bedingte Anweisung einbinden:

if (strlen($string) > $desired_width) {
  $truncated_string = substr($string, 0, strpos(wordwrap($string, $desired_width), "\n"));
}
Nach dem Login kopieren

Umgang mit Zeilenumbrüchen

Ein subtiles Problem entsteht, wenn die Zeichenfolge vor dem gewünschten Abbruchpunkt ein Zeilenumbruchzeichen enthält. In solchen Fällen kann die Zeilenumbruchfunktion vorzeitig einen Zeilenumbruch erzeugen. Um dies zu überwinden, können wir einen ausgefeilteren, auf regulären Ausdrücken basierenden Ansatz verwenden:

function tokenTruncate($string, $desired_width) {
  $parts = preg_split('/([\s\n\r]+)/u', $string, null, PREG_SPLIT_DELIM_CAPTURE);
  $parts_count = count($parts);

  $length = 0;
  $last_part = 0;
  for (; $last_part < $parts_count; ++$last_part) {
    $length += strlen($parts[$last_part]);
    if ($length > $desired_width) { break; }
  }

  return implode(array_slice($parts, 0, $last_part));
}
Nach dem Login kopieren

Diese Funktion iteriert über Wort-Tokens und stoppt, wenn die Gesamtlänge die gewünschte Breite überschreitet. Anschließend wird die abgeschnittene Zeichenfolge neu erstellt und sichergestellt, dass sie an einer Wortgrenze endet.

Testen und Umgang mit Komplexitäten

Unit-Tests sind entscheidend für die Validierung der Funktionalität unseres Codes. Die bereitgestellte PHP-Testklasse PHPUnit demonstriert das korrekte Verhalten der tokenTruncate-Funktion.

Spezielle UTF8-Zeichen wie „à“ erfordern möglicherweise eine zusätzliche Behandlung. Dies kann durch das Hinzufügen von „u“ am Ende des regulären Ausdrucks erreicht werden:

$parts = preg_split('/([\s\n\r]+)/u', $string, null, PREG_SPLIT_DELIM_CAPTURE);
Nach dem Login kopieren

Durch den Einsatz dieser Techniken können wir Zeichenfolgen in PHP sicher kürzen, ihre semantische Integrität bewahren und ästhetisch ansprechende und konsistente Ergebnisse gewährleisten .

Das obige ist der detaillierte Inhalt vonWie kann ich Strings in PHP kürzen und gleichzeitig 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