Tabelle wird durch langen Text verbreitert

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
SantaZ
Mitglied
Beiträge: 411
Registriert: 20.08.2003 12:06
Wohnort: NRW

Tabelle wird durch langen Text verbreitert

Beitrag 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.
cu SantaZ
Benutzeravatar
Leuchte
Ehemaliges Teammitglied
Beiträge: 9179
Registriert: 26.05.2003 14:57
Wohnort: Duisburg
Kontaktdaten:

Beitrag 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);
Benutzeravatar
SantaZ
Mitglied
Beiträge: 411
Registriert: 20.08.2003 12:06
Wohnort: NRW

Beitrag 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
cu SantaZ
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag 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.
Antworten

Zurück zu „Coding & Technik“