automatischer zeilenumbruch...

blubber

Erfahrenes Mitglied
Hi,

ich hab diese Frage zwar schon im html forum gepostet, da ich eigentlich dachte, dass es mit css styles oder sowas lösbar ist, aber vielleicht funzt das ja auch via php. also folgendes:

Ich möchte meine shoutbox so einstellen, dass wenn ein wort das jemand postet nichtmehr in die zeile passt, der automatisch in die nächste zeile springt. Momentan sieht das bei mir so aus:

<span style="word-break:break-all;word-wrap:break-word"><?=$print[txt]?></span>

doch so macht er NICHT automatisch einen umbruch, sondern trennt das Wort einfach ab wo es aufhört

also kann das z.B. so aussehen:

"Hier ist die Zeile am En
de, und das ist nicht sch
ön."

Was muss ich für den span style schreiben, damit er das automatisch macht bzw. wie kann man das Problem sonst noch lösen?

bye
 
nach einem wort macht der browser eigentlich standartmäßig nen zeilenwechsel wenn das browserfenster (oder die tabelle) zu klein is
 
ja schon...

..aber angenommen, EINE Zeile der Shoutbox ist 13 Zeichen lang, wenn nun einer ein Wort schreibt, welches 15 oder 20 Zeichen lang ist, dann verschiebt es mir meine ganzen Tabellen.

Klar, wenn ich den Style einfach weglasse macht er automatisch zeilenumbrüche, aber NUR unter der Voraussetzung, dass KEIN Wort länger ist, als EINE Zeile der Shoutbox.

Und das ist ja mein Problem, wenn eben jemand ein längeres Wort als z.B. 13 Zeichen postet, soll er das Wort trennen, sonst nicht.

*edit*

also wäre sowas wie eine if-abfrage ideal:

PHP:
if (gepostetes Wort länger als 13 Zeichen) 

{ mach Zeilenumbruch im Wort }

else

{ GanzNormal }

:)
bye
 
Zuletzt bearbeitet:
puh ich versuchs mal:
PHP:
$text = explode(" ", $shoutBoxText);
$count = count($text);

for ($i=0; i$<$count; $i++)
{
    $laenge = 0; // Var leeren
    $laenge = strlen($text[$i]); // länge des strings zählen
    
    if ($laenge !< 14)
    {
        $teilen = substr ($text[$i], "0", "12");
        $teilen .= "-<br>";
        $teilen .= substr ($text[$i], "13", $laenge);
        $text[$i] = $teilen;
    }
$i++;
}
$text_gesamt = implode (" ", $text);
So :) Ich glaub zwar, dass das einfacher geht, aber bin ja nochn (relativ gesehen) nen php noob :)
Hoffe das es funzt

Grüße, Morph
 
hi,

keine Ahnung ob das funktioniert, ich weiss nämlich garnet, wie ich das einbauen muss :)

also das hier ist meine Ausgabezeile des Textes (html):

<font face="Verdana, Arial, Helvetica, sans-serif" size="1" color="#000000">
<?=$print[txt]?>
</font>

und wie soll da nun dein Script einbinden? :)

bye
 
PHP:
<?php
echo "<font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"1\" color=\"#000000\">";
// $text = der komplette eingegebene text eines users
$text = explode(" ", $shoutBoxText);
$count = count($text);

for ($i=0; i$<$count; $i++)
{
    $laenge = 0; // Var leeren
    $laenge = strlen($text[$i]); // länge des strings zählen
    
    if ($laenge !< 14)
    {
        $teilen = substr ($text[$i], "0", "12");
        $teilen .= "-<br>";
        $teilen .= substr ($text[$i], "13", $laenge);
        $text[$i] = $teilen;
    }
$i++;
}
$text_gesamt = implode (" ", $text); 
echo $text_gesamt;
echo "</font>";
Sooo - könnte gehen ;) Ich glaub ich teste das mal

Grüße, Morph
 
Es funzt tatsächlich ;)
PHP:
<?php

echo "<font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"1\" color=\"#000000\">";

// $text = der komplette eingegebene text eines users
$text_exp = explode(" ", $text);
$count = count($text_exp);

for ($i=0; $i < $count; $i++)
{
    $laenge = 0; // Var leeren
    $laenge = strlen($text_exp[$i]); // länge des strings zählen
    
    if ($laenge > 13) // 13 = max länge eines wortes
    {
        $teilen = substr ($text_exp[$i], "0", "12");
        // 12 = max länge eine wortes -1,
        // da ja noch ein bindestrich angehangen wird
        $teilen .= "-<br>";
        $teilen .= substr ($text_exp[$i], "13", $laenge);
        // 13 = nach dem anhängen des bindestrichs und
        // des zeilenumbruchs wird das restliche wort gespeichert
        $text_exp[$i] = $teilen;
    }
}
// fügt die einzelnen Wörter (hier in arrays) wieder
// zusammen und fügt nach jedem neuen wort ein leerzeichen ein
$text_gesamt = implode (" ", $text_exp); 

echo $text_gesamt;
echo "</font>";
?>

Grüße, Morph

Edit: So, ein paar kommentare hinzugefügt
 
Zuletzt bearbeitet:
yeah..

cool man, funzt wunderbar, danke !!
vonwegen "php noob" :-)

Aber eine Frage hab ich ja doch noch :)

Angenommen es kommt ein Spezialist vorbei, und meint, er müsste 100 Zeichen (also ohne leerzeichen dazwischen) eingeben (mehr geht nicht), dann würde dein Script in der ersten Zeile nach 12 Zeichen einen Umbruch machen, doch in der nächsten Zeile nichtmehr, dann wären in Zeile 2 immernoch 88 Zeichen, was auch ein wenig viel wäre :)

kurz: Würdest das Script so hinbekommen, dass es über sagen wir 7 oder 8 Zeilen funktioniert? :)


Ansonsten echt fett, danke nochmals.

bye
 
Ich probiers mal ;)
Dürfte nicht sooo schwer sein - ma schaun wie lange ich brauch :-)
Ergebniss folgt schnellstmöglichst

Grüße, Morph
 
bugreport :)

Mir sind noch ein paar "Bugs" aufgefallen:

1. Die Regel mit dem Wort das nicht länger sein darf als z.B. 13 Zeichen gilt NUR für die erste Zeile

bsp.: wenn jemand schreibt

"mir geht es heute WUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUNDERBAR"

dann sieht das so aus:

"mir geht es heute
WUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUNDERBAR"

also in Zeile 2 trennt er nicht.




2. Beim trennen killt er einen Buchstaben.

bsp.: wenn jemand schreibt

"Sauerkrautsalatobst"

dann sieht das so aus:

"Sauerkrautsa-
atobst"

also er hat das "l" von "salat" gekillt.

bye :)
 
Zurück