Länge der Ausgabe von Daten aus DB begrenzen

wordwrap() finde ich persönlich nicht so schön, da hier auch Leerzeichen mitgezählt werden.

Wenn du wirklich nur trennen willst, wenn das Wort mehr als X Zeichen hat, kannst du auch ne RegularExpression verwenden.
PHP:
// Anzahl der Zeichen, nach denen umgebrochen werden soll
$cutAfter = 5;
echo preg_replace("#([\S]{{$cutAfter}})#","\\1<br/>",$text);

Einen direkten Vergleich hast du mit dem Snippet
PHP:
<?php
  $text = "0123456789 0 1 2 3 4 5 6 7 8 9 Flugzeugumbauapparat";
  $cutAfter = 5;

  echo wordwrap($text, $cutAfter, "<br/>");
  echo "<br />----------<br />";

  echo preg_replace("#([\S]{{$cutAfter}})#","\\1<br/>",$text);
?>
 
Zuletzt bearbeitet:
Wie ist das?

HTML:
<hr>
<table width="500" border="0" cellspacing="0" cellpadding="2">
	<tr>
		<td><font face="Arial" color="#333333"><b>Thema</b><i>01.01.1970</i></font></td>
	</tr>
</table>
<hr>
<br>
<table width="500" table="0" cellspacing="0" cellpadding="2">
	<tr>
		<td>
			<div style="word-wrap:break-word;width:500px;">
				<font face="Arial" color="#333333">
Loremipsumdolorsitbmet,consetetursadipscingelitr,seddiamnonumyeirmodtemporinviduntutlaboreetdoloremagnaaliquyamerat,seddiamvoluptua.Atveroeosetaccusametjustoduodoloresetearebum.Stetclitakasdgubergren,noseatakimatasanctusestLoremipsumdolorsitamet.Loremipsumdolorsitamet,consetetursadipscingelitr,seddiamnonumyeirmodtemporinviduntutlaboreetdoloremagnaaliquyamerat,seddiamvoluptua.Atveroeosetaccusametjustoduodoloresetearebum.Stetclitakasdgubergren,noseatakimatasanctusestLoremipsumdolorsitamet.
				</font>
			</div>
		</td>
	</tr>
</table>
<hr>
 
@Back2toxic
öhm.... er will den Text umbrechen. Nicht einfach irgendwo im Wort ein Zeilenumbruch einfügen. Text lesbar umbrechen heisst, dass man wenn irgendwie möglich bei den Leerzeichen umbricht.
Mann kann aber auch mit wordwrap() ein Zeilenumbruch bei allzulangen Wörtern erzwingen. Einfach noch den optionalen Parameter cut auf true setzen.

Dein Code zerteilt einfach Wörter die länger als 5 Zerichen sind. Hat aber ansonsten kein Einfluss auf die maximale Breite des Textes.

Nehme ich in deinem Beispiel eine max. Textbreite von 20 Zeichen.
PHP:
<?php
  $text = "Fischers Fritz fischt frische Fische, frische Fische fischt fischers Fritz";
  $cutAfter = 20;

  echo wordwrap($text, $cutAfter, "<br/>");
  echo "<br />----------<br />";

  echo preg_replace("#([\S]{{$cutAfter}})#","\\1<br/>",$text);
?>
Dann sieht die Ausgabe so aus
Code:
//Wordwrap
Fischers Fritz
fischt frische
Fische, frische
Fische fischt
fischers Fritz
----------
//Die Lösung von Back2toxic
Fischers Fritz fischt frische Fische, frische Fische fischt fischers Fritz

Dein Code hat keinen einzigen Zeilenumbruch gamcht, da alle Wörter kürzer als die Zeilenlänge ist.

Fazit: Ihr mögt wordwrap() hassen, aber es macht genau das was es machen soll. Man kann natürlich aich eine solche Funktion nachbauen - ist aber nicht immer ganz einfach.
 
Ok, dann verstehe ich das Problem aber nicht. In welchem Browser wird denn ein Text, welcher Leerzeichen enthält, nicht umgebrochen?
 
Das habe ich ja ganz oben auch schon geschrieben. Einzig wenn in dem Text gar keine Leerzeichen enthalten wären kann das Problem im Grunde auftreten.

Was aber den Fehler auslösen könnte, wäre das nowrap Attribut in der Zelle der Tabelle. Dadurch wird dann ja absichtlich der Umbruch verhindert.
 
Zurück