Zeilenumbruch / Function

SaTaN

Erfahrenes Mitglied
Hallo Leute,

bin am verzweifeln bei dieser Function()

PHP:
   function short_words($str,$cols,$cut) {
       $str = str_replace("\r\n","",$str);
       $str = str_replace("\n","",$str);
       $str = str_replace("\r","",$str);
       $tag_open = '<';
       $tag_close = '>';
       $in_tag = 0;
       $str_len = strlen($str);
       $segment_width = 0;
   
       for ($i=0; $i <= $str_len; $i++){
           if (substr($str,$i,strlen($cut)) == $cut) {
               $i += strlen($cut)-1;
               $segment_width = 0;
           } else {
               if ($str[$i] == $tag_open) {  // ZEILE 25
                   $in_tag++;
               } elseif ($str[$i] == $tag_close) { //  ZEILE 27
                   if ($in_tag > 0) {
                       $in_tag--;
                   }
               } else {
                   if ($in_tag == 0) {
                       $segment_width++;
                       if ($str[$i] == " ") {  //  ZEILE 34
                           $last_space = $i;
                       }
                       if (($segment_width > $cols) && ($str[$i] != " ")) {
                           if ($last_space < $i) {
                               $str = substr($str,0,$last_space).$cut.substr($str,$last_space);
                               $i  = $last_space + strlen($cut) - 1;
                           } else {
                               $str = substr($str,0,$i).$cut.substr($str,$i);
                               $i  += strlen($cut) - 1;
                           }
                           $last_space    = 0;
                           $str_len        = strlen($str);
                           $segment_width  = 0;
                       }
                   }
               }
           }
       }
       return $str;
   }
$text = "Der Text ist recht schön komponiert. Die Tatsache, daß er mit dem eigentlichen Ende beginnt und den Textanfang am Schluß wieder aufgreift und noch ein paar Zeilen weiterführt, gibt dem Ganzen einen stimmigen Rahmen. Darüberhinaus zieht der Text seine Stärke aus der Figur des Obdachlosen, der durch seine besondere Fähigkeit, aurafühlend zu sein, über das gängige Klischee des Obdachlosen als einem Menschen, dem es an allem mangelt, hinausgeht (auch wenn ihm im Text diese Fähigkeit nicht zum Vorteil gereicht). Die Schwächen des Textes würde ich zum einen darin sehen, daß stimmige Bilder immer wieder überflüssigerweise durch den Ich-Erzähler kommentiert werden und der Text dadurch bisweilen in einen moralischen Ton verfällt. Zum anderen scheint mir das Potential der Interaktion des Ich-Erzählers mit dem Obdachlosen nicht ausgeschöpft zu sein. Hierzu im folgenden mehr.
";

$text = short_words($text, 45 ,"<br />");
echo $text;
Das die Fehlerausgabe :

Notice: Uninitialized string offset: 996 in /hdc/html/text.php on line 25

Notice: Uninitialized string offset: 996 in /hdc/html/text.php on line 27

Notice: Uninitialized string offset: 996 in /hdc/html/text.php on line 34


Wenn die Zeile grösser ist als 45 Zeichen dann hängt sich das Script auf.
Wer könnte da mir weiter helfen ?

Vielen Dank

Euer SaTaN
 
Versuchs mal so:
PHP:
function short_words($str,$cols,$cut) {
       $str = str_replace("\r\n","",$str);
       $str = str_replace("\n","",$str);
       $str = str_replace("\r","",$str);
       $tag_open = '<';
       $tag_close = '>';
       $in_tag = 0;
       $str_len = strlen($str);
       $segment_width = 0;
   
       for ($i=0; $i <= $str_len; $i++){
           if (substr($str,$i,strlen($cut)) == $cut) {
               $i += strlen($cut)-1;
               $segment_width = 0;
           } else {
               if ($str[$i] == '$tag_open') {  // ZEILE 25
                   $in_tag++;
               } elseif ($str[$i] == '$tag_close') { //  ZEILE 27
                   if ($in_tag > 0) {
                       $in_tag--;
                   }
               } else {
                   if ($in_tag == 0) {
                       $segment_width++;
                       if ($str[$i] == " ") {  //  ZEILE 34
                           $last_space = $i;
                       }
                       if (($segment_width > $cols) && ($str[$i] != " ")) {
                           if ($last_space < $i) {
                               $str = substr($str,0,$last_space).$cut.substr($str,$last_space);
                               $i  = $last_space + strlen($cut) - 1;
                           } else {
                               $str = substr($str,0,$i).$cut.substr($str,$i);
                               $i  += strlen($cut) - 1;
                           }
                           $last_space    = 0;
                           $str_len        = strlen($str);
                           $segment_width  = 0;
                       }
                   }
               }
           }
       }
       return $str;
   }
$text = "Der Text ist recht schön komponiert. Die Tatsache, daß er mit dem eigentlichen Ende beginnt und den Textanfang am Schluß wieder aufgreift und noch ein paar Zeilen weiterführt, gibt dem Ganzen einen stimmigen Rahmen. Darüberhinaus zieht der Text seine Stärke aus der Figur des Obdachlosen, der durch seine besondere Fähigkeit, aurafühlend zu sein, über das gängige Klischee des Obdachlosen als einem Menschen, dem es an allem mangelt, hinausgeht (auch wenn ihm im Text diese Fähigkeit nicht zum Vorteil gereicht). Die Schwächen des Textes würde ich zum einen darin sehen, daß stimmige Bilder immer wieder überflüssigerweise durch den Ich-Erzähler kommentiert werden und der Text dadurch bisweilen in einen moralischen Ton verfällt. Zum anderen scheint mir das Potential der Interaktion des Ich-Erzählers mit dem Obdachlosen nicht ausgeschöpft zu sein. Hierzu im folgenden mehr.
";

$text = short_words($text, 45 ,"<br />");
echo $text;

So funktioniert es zumindest bei mir :)
 
3 mal?

Hast du es mal auf anderem Space/Webserver probiert? Andere PHP Version?

Bei mir funktioniert das Script jedenfalls...

und gibt folgendes aus:

PHP:
Der Text ist recht schön komponiert. Die<br /> Tatsache, daß er mit dem eigentlichen Ende<br /> beginnt und den Textanfang am Schluß wieder<br /> aufgreift und noch ein paar Zeilen<br /> weiterführt, gibt dem Ganzen einen stimmigen<br /> Rahmen. Darüberhinaus zieht der Text seine<br /> Stärke aus der Figur des Obdachlosen, der<br /> durch seine besondere Fähigkeit, aurafühlend<br /> zu sein, über das gängige Klischee des<br /> Obdachlosen als einem Menschen, dem es an<br /> allem mangelt, hinausgeht (auch wenn ihm im<br /> Text diese Fähigkeit nicht zum Vorteil<br /> gereicht). Die Schwächen des Textes würde<br /> ich zum einen darin sehen, daß stimmige<br /> Bilder immer wieder überflüssigerweise durch<br /> den Ich-Erzähler kommentiert werden und der<br /> Text dadurch bisweilen in einen moralischen<br /> Ton verfällt. Zum anderen scheint mir das<br /> Potential der Interaktion des Ich-Erzählers<br /> mit dem Obdachlosen nicht ausgeschöpft zu<br /> sein. Hierzu im folgenden mehr.

PS. netter Text ;)
 
Hallo,

also auf meinem festem Webspace PHP-Version 4.3.4
funktioniert die Function ohne Notice Meldung.

Auf meinem Webserver mit der PHP-Version 4.2.2
funktioniert die Function leider nicht, sondern bekomme da
immer noch eine Notice Meldung.

Wer könnte mir sagen was da los ist.

Muss vielleicht in der PHP.INI noch was eingestellt werden ?

Vielen Dank

Euer SaTaN
 
Zurück