Filter um lange Wörter umzubrechen

Hallo,

vor einiger Zeit wurde mal die Frage nach einem Filter gestellt, der lange
Wörter umbricht. Gerade bei eingebundenen RSS-Feeds kommt es schonmal vor,
dass Text aus dem Layout rausbricht. Um dies zu vermeiden hilft folgender
Filter, der die Zeichen pro Zeile auf 20 begrentzt und dann einen brutalen
Umbruch vornimmt.

So wird aus:
Beispieltext_für_einen_Umbruch_mit_langen_Wörtern

folgender Text:
Beispieltext_für_ein
en_Umbruch_mit_lange
n_Wörtern

Der Filter sieht in einer Syndic-Schleife bspw. so aus:

<BOUCLE_studrub(SYNDIC_ARTICLES) {id_syndic=1}>
<p><a href="#URL_ARTICLE"><strong>[(#TITRE|text_umbrechen)]</strong></a></p>
</BOUCLE_studrub>

Dies ist der korrespondierende php-Code aus der mes_options.php3.

function text_umbrechen($text, $size = 20) {
    $new_text = '';
    $text_1 = explode('>',$text);
    $sizeof = sizeof($text_1);
    for ($i=0; $i<$sizeof; ++$i) {
        $text_2 = explode('<',$text_1[$i]);
        if (!empty($text_2[0])) {
            $new_text .= preg_replace('#([^\n\r .]{'. $size .'})#i', '\\1 ',
            $text_2[0]);
        }
        if (!empty($text_2[1])) {
            $new_text .= '<' . $text_2[1] . '>';
        }
    }
    return $new_text;
}

Natürlich ist der Umbruch nicht der allerschönste, aber schon besser als ein
Ausbrechen des Layouts.

Viele Grüße
jonas

Hallo Jonathan,
vielen Dank, das Problem ist mir auch untergekommen. Wenn die Kids in den Foren bei sowieso.de mal wieder 150 Ausrufezeichen posten, geschehen merkwürdige Dinge mit dem Layout.

Könntest Du noch den Link auf eine Seite schicken, wo Du den Filter einsetzt? Dann würde ich einen Artikel auf www.spip-contrib.net schreiben und damit endlich die Rubrik für deutsche Nutzerbeiträge eröffnen (kannst Du natürlich auch selber machen, einfach wie immer bei SPIP als Redakteur anmelden und Artikel posten. Eine Nachricht an mich wäre hilfreich, damit ich erfahre, wann ich den Artikel freischalten soll.)

Besten Spipgruß,
klaus++

Jonathan Spiegel schrieb:

Hallo,

vor einiger Zeit wurde mal die Frage nach einem Filter gestellt, der lange
Wörter umbricht. Gerade bei eingebundenen RSS-Feeds kommt es schonmal vor,
dass Text aus dem Layout rausbricht. Um dies zu vermeiden hilft folgender
Filter, der die Zeichen pro Zeile auf 20 begrentzt und dann einen brutalen
Umbruch vornimmt.

So wird aus:
Beispieltext_für_einen_Umbruch_mit_langen_Wörtern

folgender Text:
Beispieltext_für_ein
en_Umbruch_mit_lange
n_Wörtern

Der Filter sieht in einer Syndic-Schleife bspw. so aus:

<BOUCLE_studrub(SYNDIC_ARTICLES) {id_syndic=1}>
<p><a href="#URL_ARTICLE"><strong>[(#TITRE|text_umbrechen)]</strong></a></p>
</BOUCLE_studrub>

Dies ist der korrespondierende php-Code aus der mes_options.php3.

function text_umbrechen($text, $size = 20) {
    $new_text = '';
    $text_1 = explode('>',$text);
    $sizeof = sizeof($text_1);
    for ($i=0; $i<$sizeof; ++$i) {
        $text_2 = explode('<',$text_1[$i]);
        if (!empty($text_2[0])) {
            $new_text .= preg_replace('#([^\n\r .]{'. $size .'})#i', '\\1 ',
            $text_2[0]);
        }
        if (!empty($text_2[1])) {
            $new_text .= '<' . $text_2[1] . '>';
        }
    }
    return $new_text;
}

Natürlich ist der Umbruch nicht der allerschönste, aber schon besser als ein
Ausbrechen des Layouts.

Viele Grüße
jonas
_______________________________________________
Spip-de@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-de