Felix Riesterer: php-Funktion wordwrap()

Beitrag lesen

Liebe(r) Metehan,

Eine vollumfängliche Interpretation und Umsetzung wird aber für mich einige Zeit in Anspruch nehmen. Daher wäre ich schon verbunden, zumindest für diese Problemstellung eine Optimierung vorgeschlagen zu bekommen, sofern nicht zuviel verlangt.

heißt das, Du willst hier Zeit sparen, indem andere Dein Problem lösen sollen? Wenn Du Dir die notwendige Zeit nicht nehmen willst, dann kann Dein Anliegen nicht wirklich so wichtig sein.

$ShoutNew[$i] = str_replace("[ b]", " [b]", $ShoutNew[$i]);

$ShoutNew[$i] = str_replace("[b ]", " [b]", $ShoutNew[$i]);
            $ShoutNew[$i] = str_replace("[ /b]", "[/b] ", $ShoutNew[$i]);
            $ShoutNew[$i] = str_replace("[/ b]", "[/b] ", $ShoutNew[$i]);
            $ShoutNew[$i] = str_replace("[/b ]", "[/b] ", $ShoutNew[$i]);

$ShoutNew[$i] = str_replace("[ i]", " [i]", $ShoutNew[$i]);
            $ShoutNew[$i] = str_replace("[i ]", " [i]", $ShoutNew[$i]);
            $ShoutNew[$i] = str_replace("[ /i]", "[/i] ", $ShoutNew[$i]);
            $ShoutNew[$i] = str_replace("[/ i]", "[/i] ", $ShoutNew[$i]);
            $ShoutNew[$i] = str_replace("[/i ]", "[/i] ", $ShoutNew[$i]);

$ShoutNew[$i] = str_replace("[ u]", " [u]", $ShoutNew[$i]);
            $ShoutNew[$i] = str_replace("[u ]", " [u]", $ShoutNew[$i]);
            $ShoutNew[$i] = str_replace("[ /u]", "[/u] ", $ShoutNew[$i]);
            $ShoutNew[$i] = str_replace("[/ u]", "[/u] ", $ShoutNew[$i]);
            $ShoutNew[$i] = str_replace("[/u ]", "[/u] ", $ShoutNew[$i]);

  
Dafür bieten sich reguläre Ausdrücke an, damit Du solche Stringmanipulationen mit einer einzigen Code-Zeile erledigen kannst. Näheres dazu im PHP-Manual: [preg_replace()](http://de2.php.net/manual/en/function.preg-replace.php)  
  
`$ShoutNew[$i] = preg_replace('~(?s)\[ ?(/)? ?([biu]) ?\]~', '[$1$2]', $ShoutNew[$i]);`{:.language-php}  
  
Ich würde auch das Wordwrapping völlig anders lösen. Warum sollte man sich auch zu schade sein, das manuell auszuprogrammieren? Man definiert eine Maximallänge, schneidet den String nach dieser ab, findet vom Ergebnisstring das letzte Leerzeichen, kürzt bis zu dessen Position und ergänzt am Ende eine Ellipse (die drei Punkte).  
  
Liebe Grüße,  
  
Felix Riesterer.

-- 
ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)