Mailinglisten-Archive |
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