Seite 1 von 1

Tabelle wird durch langen Text verbreitert

Verfasst: 13.08.2004 20:51
von SantaZ
hallo,

ich hab ein Problem. Und zwar bin ich dabei eine Portalseite zu erstellen. Das klappt ja auch schon mal. Ich möchte mit Hilfe dieses Codes:

Code: Alles auswählen

        		<!-- BEGIN fetchpost_row -->
		<table width="380" bgcolor="#9CCFE7" cellpadding="2" cellspacing="1" border="1">
      <tr>
			<td  height="25" bgcolor="#FF9200"><b>{fetchpost_row.TITLE}</b></span></td>
		  </tr>
		  <tr>
			<td  align="left" width="380"  bgcolor="#9CCFE7" height="24">{L_POSTED}: <b>{fetchpost_row.POSTER}</b> @ {fetchpost_row.TIME}</span></td>
		  </tr>
		  <tr>
			<td align="left"  width="380" bgcolor="#9CCFE7"><span class="gensmall">{fetchpost_row.TEXT}<br /><br />{fetchpost_row.OPEN}<a href="{fetchpost_row.U_READ_FULL}">{fetchpost_row.L_READ_FULL}</a>{fetchpost_row.CLOSE}</span></td>
		  </tr>
		  <tr>
			<td  align="left"  bgcolor="#9CCFE7" height="24">{L_COMMENTS}: {fetchpost_row.REPLIES} :: <a href="{fetchpost_row.U_VIEW_COMMENTS}">{L_VIEW_COMMENTS}</a> (<a href="{fetchpost_row.U_POST_COMMENT}">{L_POST_COMMENT}</a>)</span></td>
		  </tr>
		</table>
		

		<!-- END fetch_post_row -->

die letzten Beiträge aus dem Forum auslesen um sie im Portal anzuzeigen.

Nun hab ich aber Probleme mit überlangen URL´s die ja keine Leerstelle enthalten. Wenn also jemand ein sehr langes Wort oder eine solche URL postet. Wird die Tabelle auseinandergezogen.

Das ganze sieht dann so aus.


http://santaz.net/forenbilder/tabellenbreite.gif


Wie kann ich das unterbinden?
Die original Portalseite ist die vom ezportal_v218.

Verfasst: 13.08.2004 21:15
von Leuchte
Du könntest die Links mittels preg_replace nach einer bestimmten Anzahl von Zeichen (im Beispiel 25) automatisch kürzen

Code: Alles auswählen

$links = preg_replace('/(.{25}).+/', '\\1...', $links);

Verfasst: 14.08.2004 12:56
von SantaZ
hi,

ich hab jetzt ein bisschen hier mit gearbeitet

Code: Alles auswählen

$links = preg_replace('/(.{25}).+/', '\\1...', $links);
leider bin ich noch nicht soweit mit PHP.

Hab es ausprobiert es in die portal.php mit einzuarbeiten. Hat ber nix gebracht.

ich hab mal die portal.php verlinkt. Vielleicht könnte mir jemand einen kleinen schups geben.


portal.php
www.santaz.net/forenbilder/portal.txt

und die
fetchposts.php
www.santaz.net/forenbilder/fetchposts.txt

Verfasst: 14.08.2004 17:42
von Pyramide
Ich würde das ganze auch nicht mit Regulären Ausdrücken machen, [php:strlen]+[php:substr] reichen doch vollkommen aus:

Code: Alles auswählen

$str = (strlen($str) > 25) ? (substr($str, 0, 22) . '...') : $str;
Ein grundlegendes Problem ist allerdings, daß die Strings
iiiiiiiiiiiiiiiiiiiiiiiii
WWWWWWWWWWWWWWWWWWWWWWWWW

beide 25 Zeichen lang sind. Um die tatsächliche anzeigebreite zu ermitteln, müsste man also entweder Funktionen wie [php:imagettfbbox] nutzen oder den String Zeichen für Zeichen durchlaufen und dabei je nach Zeichen eine unterschiedliche Gewichtung zu einem Zähler addieren und abbrechen, wenn dieser einen bestimmten Wert erreicht hat.