phpbar.de logo

Mailinglisten-Archive

[php] Newsletter Text formatieren

[php] Newsletter Text formatieren

Christoph Theis ctheis_(at)_gmx.de
Tue, 25 Jul 2000 00:12:33 +0200


Hallo !

Ich habe ein Problem bei der Generierung eines Newsletter mit PHP. Und zwar
soll der Inhalt so formatiert werden, dass nach max. 72 Zeichen ein
Zeilenumbruch (\n) realisiert wird; natuerlich nicht mitten in einem Wort,
sondern bei einem Leerzeichen. Das heisst also, ich überprüfe beim ersten
Durchlauf das 72 Zeichen. Ist es ein Leerzeichen wird das Leerzeichen durch
ein '\n' ersetzt, die aktuelle Position auf 72 gesetzt. Falls kein
Leerzeichen gefunden wurde, geht man soweit zurueck (71, 70, 69 ...) bis man
auf ein Leerzeichen stoesst. Dort dann den Zeilenumbruch einfuegen.
Ok, naechste Zeile, aktuelle Position um 72 erhoehen und wieder abfragen.
usw.

Soviel zur Theorie... leider hapert es bei der Umsetzung. Hier mein (nicht
sauberer!) Vorschlag:

function newsformat($text, $max=72) {
    $pos=0;
    $textlen = strlen($text);
    while ($pos < $textlen) {
        $pos_temp = $pos+$max;
        while (substr($text,$pos_temp,1)!=" ")

            $pos_temp--; }
        $temp = substr($text, 0, $pos_temp-1);
        $temp .= "\n";
        $temp .= substr($text, $pos_temp+1);
        $text = $temp;
        $pos = $pos_temp+1;
     }
 return $text;
}

Ich setzte hier voraus, dass in den 72 Zeichen pro Zeile mindestens ein
Leerzeichen vorhanden ist. Ist in meinem Fall IMMER gegeben und deswegen
kann eine Abfrage weggelassen werden.
Ach ja: das ganze laeuft mit PHP 3, weshalb die nette Funktion str_replace
nicht verwendet werden kann und der Umweg ueber erster Teilstring + \n +
zweiter Teilstring genommen werden muss (oder?).

Leider haengt er sich mitten drin auf und haelt bei der max
Zeitueberschreitung an... :(

Vielen Dank schon mal fuer Eure Hilfe!

MfG,
Christoph Theis

--
2:Steps
Schmidt, Theis, Wald GbR
Internet und Digital Publishing



php::bar PHP Wiki   -   Listenarchive