Home | Registrieren | Einloggen | Suchen | Aktuelles


Forum » Auszeichnungssprachen » Zeilenumbruch in Tabelle erzwingen Antworten
Zeilenumbruch in Tabelle erzwingen

tobias
Foren-Team


Beiträge: 708


Ist es möglich, einen Zeilenumbruch in einer Tabelle zu erzwingen, wenn sich ein überlanges Wort in dieser befindet?

Beispiel:

<table width="20">
<tr>
<td>
einganzlangeswortdasnichtumbruchenwird
</td>
</tr>
</table>

In der Regel umbricht der Webbrowser Wörter nur, wenn sich Leerzeichen dazwischen befinden. Andernfalls wird - wie im Beispiel oben - die Breite der Tabelle vergrößert. Kann man das verhindern?


  Profil   Website   Editieren   Zitieren

stalkerX
Mausakrobat


Beiträge: 183


ich wüsste jetzt nur eine php-lösung, mit html geht das meines wissens nach nicht...


---
.: Web 2.0 Entwickler & seine Notizen :.

  Profil   Website   Editieren   Zitieren

klaus
Pixelschubser


Beiträge: 4


mit html allein geht das nicht.
aber warum nicht das wort an geeigneter stelle trennen?
oder wird der inhalt dynamisch erzeugt?
oder verstehe ich dein problem nicht?

  Profil   Editieren   Zitieren

tobias
Foren-Team


Beiträge: 708


Der Begriff "Wort" ist nicht unbedingt gut gewählt. Stell dir stattdessen so eine URL vor:
http://www.eineseitexyzdieganzlangist/ja/ganz/lang/index.html

Oder stell dir vor, es soll schlecht formatierter HTML-Code ausgegeben werden:
"<html><head><title>dsfsdfsdfsdf</title>..."

Der Inhalt wird dynamisch erzeugt. Sicher, per PHP ließe sich das mit etwas Aufwand trennen, aber eine einfachere Lösung wäre nicht schlecht.

_________________
Gehe zu Seite ( 1 | 2 | 3 | 4 | 5 )


  Profil   Website   Editieren   Zitieren

HG
Posting-Schinder


Beiträge: 520


Ich glaube, daß es mit php einfacher ist, das zu trennen. Bei einer HTML / Javascript-Lösung hast du das Problem, daß vieles sehr speziell gelöst werden müsste. So könntest du z.B. einen Bereich mit einer festen Breite definieren, und alles, was drüber rausfließen würde wird dann nur per Scrollbar verfügbar.

Du könntest natürlich auch mit Javascript durch alle angezeigten Buchstaben gehen, und nach 60 Zeichen hintereinander ein Leerzeichen einfügen. Aber ich glaube, daß der Aufwand zu groß wäre. Mittels einer einfachen HTML-Eigenschaft geht das nicht. Bestenfalls in Textfeldern. Aber da hast du wieder das Problem, daß du dann keine Links oder Formatierungen in den Text einfügen kannst...

Mit php ist es daher einfacher, vor allem, wenn der Inhalt aus einer DB oder einer Datei kommt. Würd ich mal sagen.



---
www.kuminatano.de

  Profil   E-Mail   Website   Editieren   Zitieren

CHX3
Pixelschubser


Beiträge: 2


1: 
2: 
3: 
4: 
5: 
6: 
7:
<table style="width:50px;">
	<tr>
		<td style="word-break:break-all;word-wrap:break-word">
			Schrecklichlangeswortdasmannichtrennenkannoderwasmeintihr?
		</td>
	</tr>
</table>


Das dürfte ohne Bindestrich und Silbenerkennung zumindest zu lange Wörter trennen.

Diese Nachricht wurde geändert von: CHX3
  Profil   E-Mail   Editieren   Zitieren

Tobi W.
Mausakrobat


Beiträge: 181


ENDLICH! Nach 2,5 Jahren haben wir einen Lösung für das Problem gefunden. Danke

---
Beamer Ersatzlampen | tobi.weinhorst | Hotel Werther

  Profil   Website   Editieren   Zitieren

HoRnominatoR
Mausakrobat


Beiträge: 165


und dann auch noch eine, die es offiziel nicht gibt und nur von 30% der grossen browser unterstuetzt wird - und das ist zu allem uebel auch noch der IE.

---
get OPERA for free

  Profil   E-Mail   Website   Editieren   Zitieren

CHX3
Pixelschubser


Beiträge: 2


1: 
2: 
3: 
4: 
5: 
6: 
7: 
8: 
9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23:
  function text_restrict_wordsize($str, $size, $fontsize = 7, $fontfile = 'verdana.ttf') {
	$size = max($size, 10);
	$fontpath = $_SERVER['DOCUMENT_ROOT'] . '/source/fonts/' . $fontfile;
	
	$strings = explode(' ', $str);

	foreach ($strings as $key => $string ) {
  		$dimensions = imagettfbbox($fontsize, 0, $fontpath, $string);
	  	$width = $dimensions[4]-$dimensions[6];
	  	
	  	if ($width > $size) { 			  	
		  	while ($width > $size) {
		  		$string = substr($string, 0, strlen($string)-1);
	  			$dimensions = imagettfbbox($fontsize, 0, $fontpath, $string . '-');
		  		$width = $dimensions[4]-$dimensions[6];
		  	}
			
		  	$strings[$key] = $string . '- ' . text_restrict_wordsize(substr($strings[$key], strlen($string), strlen($strings[$key]) - strlen($string) - 1), $size, $fontsize, $fontfile);
	  	}
	}
		
	return implode(' ', $strings);	  	
  }


Mit PHP kann man das so lösen. Diese Funktion erkennt zu lange Wörter (in Pixeln!) und trennt diese mit einem Bindestrich ab. Hab ich für meine Homepage geproggt.
Achtung: Diese Funktion benötigt die Angabe der Schriftart und Schriftgröße, da aber die meisten Server keine Schriftarten bieten, muss man diese selbst auf den Server kopieren. Deshalb steht am Anfang der Funktion $fontfile = 'verdana.ttf', da ich bei meiner Homepage diese Schriftart verwende. Und In der Zeile $fontpath = $_SERVER['DOCUMENT_ROOT'] . '/source/fonts/' . $fontfile; musst du noch
'/source/fonts/' durch den Pfad ersetzen, in dem du deine Fonts auf dem Server speicherst.

  Profil   E-Mail   Editieren   Zitieren
 

Antworten
Nach oben