• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

wordwrap Problem

Momchilo

Neues Mitglied
Hallo,

ich bastel gerade an einer Shoutbox, die auch soweit funktioniert.
Doch das Problem ist, dass die Ausgabe mit wordwrap nicht so funktioniert, wie ich mir das vorstelle.
Quellschnipsel:
PHP:
$string = wordwrap($string, 16 , "<br />" , 1);
So wird mir das auch noch richtig dargestellt ohne dass 16x "O" die Tabelle sprengen würden.
Doch jetzt habe ich alle 16 Zeichen einen Zeilenumbruch.
Also der Text:"viel Text viel Text viel Text" wird folgendermaßen dargestellt:

viel Text viel
Text viel Text

Dieser Text würde aber fast vollständig in eine Zeile passen, so dass es sehr merkwürdig aussieht und viel Platz beansprucht.
Gibt es für dieses Problem eine Lösungsmöglichkeit?
Hier bisschen mehr Quellcode:
PHP:
<!--Ausgabe der Beiträge-->
<?PHP
if(!isset($_GET['action']) && !isset($_POST['action'])){
?>
<form name="shoutbox" action="<?PHP echo $_SERVER['PHP_SELF']; ?>" method="post">
<table class="shout_ausgabe">

    <tr>
        <td style="font-size:<?PHP echo $fontsize; ?>;<?PHP echo $css1; ?>" colspan="4">
            <?PHP
            //Ausgabe der Meldung, wenn die Spammtime noch nicht abgelaufen ist:
            

            $posts = mysql_query($postquery);
            while($rowp = mysql_fetch_array($posts))
                {
                $datum = date("d.n - G:i",$rowp['time']);

                $string = $rowp['nachricht'];
                $string = wordwrap($string, 16 , "<br />" , 1);
                $string = preg_replace('"( |^)(www.[-a-zA-Z0-9@:%_\+.~#?&//=]+)"i','\\1<a href="http://\2" target="_blank">\\2</a>', $string);
                if($smilies == 1) $string = shout01_smilies($string);

                $nbreak = wordwrap($rowp['username'] , $break , "-<br />" , 1);

                //echo "<a href=\"javascript:popup(".$rowp['id'].", 'edit')\" style=\"color:green; text-decoration:none;\">&euro;</a> ";
                //echo "<a href=\"javascript:popup(".$rowp['id'].", 'del')\" style=\"color:red; text-decoration:none;\">x</a> ";
                echo '<span style="color:#777777"><i>' . $datum . '</i><br><b>' .            $nbreak . ':</b><br>' . $string . '<br /><br /></span>';              
                 }
            ?>
        </td>
    </tr>     
    <tr>
        <td align="left" width="25%" style="font-size:<?PHP echo $fontsize; ?>;"><?PHP if($_GET['site'] > 1){ echo "<a href=\"".$_SERVER['PHP_SELF']."?site=1\"><b>&laquo; 1</b></a>"; }else{ echo "&nbsp;"; } ?></td>
        <td align="center" width="25%" style="font-size:<?PHP echo $fontsize; ?>;">&nbsp;<?PHP if($zl > 0){ echo "<a href=\"".$_SERVER['PHP_SELF']."?site=".$zl."\"><b>&lt; ".$zl."</b></a>"; } ?></td>
        <td align="center" width="25%" style="font-size:<?PHP echo $fontsize; ?>;"><?PHP if(isset($vl) && $vl <= $maxsites){ echo "<a href=\"".$_SERVER['PHP_SELF']."?site=".$vl."\"><b>".$vl." &gt;</b></a>"; } ?>&nbsp;</td>
        <td align="right" width="25%" style="font-size:<?PHP echo $fontsize; ?>;"><?PHP if(isset($_GET['site']) && $_GET['site'] < $maxsites OR $vl == 2){ echo "<a href=\"".$_SERVER['PHP_SELF']."?site=".$maxsites."\"><b>".$maxsites." &raquo;</b></a>"; }else{ echo "&nbsp;"; } ?></td>
    </tr>
	<!--ENDE: Ausgabe der Beiträge-->
 
du kannst mal versuchen hinter das <br \> noch ein \n setzen vll liegts daran
und wozu is die letzte 1?
ich hab davon noch nie was gehört und auch nix im internet darüber gefunden wenn dus auch net weißt mach sie mal weg ;)
 
Die 1 ist für nen cut (siehe hier)
Wenn ich die wegmache bzw. eine 0 raus mache, dann werden Wörter nicht mehr umgebrochen.
Beispiel:
mit cut=0
diesisteinsehrlangeswort

mit cut=1
diesisteinsehrla
ngeswort

Das ist also schon nötig.
Ich habe jetzt noch /n hinzugefügt, aber helfen tut es leider nicht.
Eine Funktion, die es ermöglicht den Inhalt des Strings bis Pixel XY auszugeben und ggf. in der nächsten Zeile weiterschreibt, wäre ideal.
 
Zuletzt bearbeitet:
Zurück
Oben