Navigation
 Startseite
 Fachbücher
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Script Mods
 phpBB Adsense Mode

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 Markdown to HTML
 Colorpicker
 Unix timestamp Tool
 TLD Liste
 Webkatalog‑Verzeichnis

Partner
 Sprüche Treff

Artfiles.de
Bietet Serviceorientierte Internetdienstleistungen...
https://www.Artfiles.de
Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains und...
https://www.Hosterplus.de
 
 
 

Text an bestimmten Zeilenlänge umbrechen

Sie befinden sich: Home > Php Tutorial > Text an bestimmten Zeilenlä...

Text an bestimmten Zeilenlänge umbrechen


Eintrag am:  02.12.2011
Hits / Besucher:  15340
Sprache:  Deutsch
Kategorie:  Einsteiger Tutorials...
Tutorial Art:  eigenes
Eingetragen von   schubertmedia schubertmedia
 
Beschreibung

Wer kennt das nicht, Sie möchten die Ausgabe für ein Newssystem oder ein Forum programmieren und das Layout ist in der Breite begrenzt. Wenn der eingefügte Text keinen Zeilenumbruch besitzt, kann es vorkommen, dass das gesamte Layout in der Breite sich verlängert. Dies ist sehr unschön und möchte Sie vermeiden.

In der Programmiersprache PHP gibt es hierfür die PHP-Funktion wordwrap() welche automatisch einen Zeilenumbruch in einen String einfügt. Sie könnten in dieser PHP Funktion verschiedene Parameter übergeben.

Im ersten Parameter wird der eigentliche String übergeben, z. B.: in einer Variable und in zweiten geben Sie die Zeilenlänge an. Es ist aber nicht zwingend notwendig, dass Sie den zweiten Parameter übermitteln, standardmäßig wird automatisch nach fünfundsiebzig Zeichen der Umbruch im String generiert. Im dritten Parameter, welcher optional ist, können Sie noch angeben, wie der Zeilenumbruch eingefügt wird.

Zusätzlich gibt es noch einen vierten Parameter, welche genauso, wie der dritte optional ist. Wenn Sie diesen angeben, werden Wörter automatisch ungebrochen, wenn diese die vorgegebene Zeilenlänge überschreiten. Nachfolgend ein Beispielcode, welche die Funktionsweise von der PHP Funktion wordwrap() demonstriert.

Beispiel:

<?php

/*
* Text in einer Variable definieren
*/
$string = 'Dies ist ein Beispieltext welcher' .
' verdeutlichen soll, wie die PHP ' .
'Funktion wordwrap() arbeitet. Dieser ' .
'Text hat mir als wie fünfundsiebzig Zeichen.';
/*
* Wordwrap mit einen Parameter wo automatisch nach
* fünfundsiebzig Zeichen ungebrochen wird
*/
$string_mit_zeilenumbruch =wordwrap($string);
echo '<pre>' . wordwrap($string_mit_zeilenumbruch) . '</pre><br><br>';

/*
* Wordwrap mit den zweiten Parameter, wo automatisch
* nach fünfzig Zeichen ungebrochen wird
*/
$string_mit_zeilenumbruch =wordwrap($string,50);
echo '<pre>' . wordwrap($string_mit_zeilenumbruch) . '</pre><br><br>';

/*
* Wordwrap mit dem dritten Parameter, wo wir anstatt
* einer neuen Zeile n ein HTML Code für den Umbruch
* verwenden
*/
$string_mit_zeilenumbruch =wordwrap($string,50,'<br>');
echo '<pre>' . wordwrap($string_mit_zeilenumbruch) . '</pre><br><br>';

/*
* Wordwrap mit den vierten Parameter, hier wird der
* Zeilenumbruch bei jedem Wort erzwungen.
*/
$string='langesWortlangesWortlangesWort';
$string_mit_zeilenumbruch =wordwrap($string,5,'<br>',1);
echo '<pre>' . wordwrap($string_mit_zeilenumbruch) . '</pre><br><br>';
?>

Ausgabe:

Ausgabe des wordwrap() Beispiel
Ausgabe des wordwrap() Beispiel


 

 

Erklärung:

Sie sehen selbst das die Verwendung von der PHP Funktion wordwrap() recht einfach ist. Leider gibt es ein Problem, wenn Sie zum Beispiel HTML-Tags in den jeweiligen String haben. Dann werden diese automatisch ungebrochen, ohne dass Rücksicht auf den HTML-Tag genommen wird. Hierfür gibt es aber eine elegante Lösung, welche ihr im nachfolgenden Beispiel sieht.

Beispiel:

<?php

function wrapHtmlText($string, $zeilen_laenge = 80, $zeilenumbruch = "\n") {
return preg_replace_callback(
'%(\s*)([^>]{' . $zeilen_laenge . ',})(<|$)%U',
function ($treffer) use ($zeilen_laenge, $zeilenumbruch) {
return $treffer[1] . wordwrap($treffer[2], $zeilen_laenge, $zeilenumbruch, true) . $treffer[3];
},
$string
);
}

$string = 'Html <font color="red">Text</font>';
echo wrapHtmlText($string, 3, "\n");
?>

Ausgabe des HTML Code:

Htm

l <font color="red">Tex
t</font>

Erklärung:

Wie Sie sehen, fügt die selbst erstellte PHP-Function wrapHtmlText() alle drei Buchstaben ein Zeilenumbruch ein. 

In dem Beispiel wird eine Funktion definiert Namens wrapHtmlText, die dazu dient, einen HTML-String umzubrechen, sodass keine Zeile länger als eine spezifizierte Länge ist. Hier ist eine detaillierte Erklärung der Funktion und des Codes:

  • Funktionsdefinition wrapHtmlText: Diese Funktion nimmt bis zu drei Parameter entgegen:

    • $string: Der zu verarbeitende HTML-String.
    • $zeilen_laenge (Standardwert 80): Die maximale Länge einer Zeile. Wenn der Text diese Länge überschreitet, wird er umgebrochen.
    • $zeilenumbruch (Standardwert "n"): Das Zeichen oder die Zeichenfolge, die für den Zeilenumbruch verwendet werden soll.
  • Anwendung von preg_replace_callback: Die Funktion verwendet preg_replace_callback, um einen regulären Ausdruck auf $string anzuwenden und eine angepasste Rückrufoperation für jede Übereinstimmung durchzuführen. Der reguläre Ausdruck '%(\s*)([^>]{' . $zeilen_laenge . ',})(<|$)%U' dient dazu, Text außerhalb von HTML-Tags zu erfassen, der die angegebene Länge überschreitet.

    • (\s*): Erfasst führende Leerzeichen vor dem Text, der umgebrochen werden soll.
    • ([^>]{' . $zeilen_laenge . ',}): Erfasst Nicht-Tag-Inhalte (d. h., Text außerhalb von <>), die länger als $zeilen_laenge sind. Die Länge wird dynamisch in den regulären Ausdruck eingefügt.
    • (<|$): Endet mit einem < (Beginn eines neuen Tags) oder dem Ende des Strings.
  • Rückruffunktion: Die anonyme Funktion, die als Rückruf verwendet wird, erhält die Übereinstimmungen ($treffer) als Parameter. Innerhalb dieser Funktion:

    • $treffer[1] enthält die erfassten führenden Leerzeichen.
    • $treffer[2] enthält den zu umbrechenden Text.
    • $treffer[3] ist entweder < (wenn ein neuer Tag folgt) oder das Ende des Strings.

    Diese Rückruffunktion wendet wordwrap auf $treffer[2] an, um den Text mit der spezifizierten $zeilen_laenge und $zeilenumbruch zu umbrechen, wobei das Brechen von Wörtern erlaubt ist (true als vierter Parameter von wordwrap).

  • Testbeispiel: Im gegebenen Beispiel wird die Funktion mit einem einfachen HTML-String und spezifischen Werten für zeilen_laenge (3) und zeilenumbruch ("\n") aufgerufen. Das bedeutet, der Text wird so umgebrochen, dass keine Zeile länger als 3 Zeichen ist, und für den Umbruch wird ein Zeilenumbruch verwendet.

Der Code demonstriert, wie Sie Textinhalt, der außerhalb von HTML-Tags steht, anhand einer definierten Zeilenlänge umbricht, ohne dabei den eigentlichen HTML-Code zu verändern oder zu beschädigen.

 

Tags:

 

Artikel hinzufügen bei:
         
Bücherregal mit drei Büchern: 'PHP 4 - Grundlagen und Profiwissen' von Hanser Verlag, 'Webdesign in a Nutshell' von O'Reilly Verlag, und 'Webgestaltung' von Galileo Computing.