Text in Zelle kürzen

JesusFreak777

Erfahrenes Mitglied
Hallo,

ist es möglich den text in einer Zelle zu kürzen,...
ja ich kenn die lösung von zeichen zählen,... aber die ist für mich nicht gut genug, da ich erstens nicht weiß wie lange die zelle ist und zweitens wenn ich einen "i" und "l" reichen Text schreibe ist der Text nach gleichvielen Zeichen kürzer wenn ich einen "m" und "w" reichen Text schreibe,...

ich möchte gerne das der Text, sobald er zu lange ist, mindestens drei "..." vor Zellen ende aufhört und in diesen Falle drei "."e hinten hingesetzt werden.

|Das ist ein Text der kurz genug ist |
|Dieser Text ist viel zu Lange deshalb wird er gek...|

ist das technisch machbar****?

Danke für eure hilfe
 
Dass einige Zeichen länger als andere sind, hängt von der Schrift ab. Du müsstest nun wissen wie die Breitenverhältnisse derm Buchstaben in der entsprechenden Schrift ist. Da man aber in CSS meistens eine ganze Schriftfamilie oder halt Alternativschriften anbietet, ist es für PHP eigentlich unmöglich zu wissen wie der Text in der Ausgabe aussieht.
 
gibt es die Möglichkeit den Text zu kürzen****?
bei Bildern gibt es die Möglichkeit overflow:hidden; damit kann ich alles was übersteht rausnehmen,... dies wäre für mich zumindest schon mal ein Anfang,...

wenn ich mal Zeit habe, versuch ich mal eine klasse zu schreiben die die Buchstaben ausmisst und dann einfach die Länge der Buchstaben im Text addiert,... mal schauen ob ich so was hinbekomme (vor allem in einer vertretbaren Zeit)

edit:
sehe gerade das overflow:hidden; nur für divs geeignet ist,... gibt es für tabellen sowas****?
kannich einen Zeilen umbruch verbieten? und was passiert dann****?
 
Zuletzt bearbeitet:
Bitte achte auf Groß- und Kleinschreibung.

wenn ich mal Zeit habe, versuch ich mal eine klasse zu schreiben die die Buchstaben ausmisst und dann einfach die Länge der Buchstaben im Text addiert,... mal schauen ob ich so was hinbekomme (vor allem in einer vertretbaren Zeit)
Was nützt dir das dann aber? Ich verstehe die Anwendung nicht richtig.
 
naja, jetzt brauche ich eine Lösung in einer Zelle das ich möglichst viel Text in einer Zelle habe ohne Zeilenumbruch und ohne automatischen vergrößern der Zelle,... weiß aber noch nicht wie,...

später dann möchte ich das wie oben beschrieben haben,... z.B. ich weiß meine Zelle ist 100px groß,... mein Text 12x i + 17x e + 3x m,... = 120px dann wird der Text bei 95px abgeschnitten und ein ... dahinter gesetzt,... das wäre schön,...
 
Ansatz:
Du speicherst die Schrift auf dem Server
Du ermittelst die Textgrösse deines Textes über imagettfbbox().
Du entfernst von Hinten Wort um Wort und prüfst erneut, bis die Breite unterhalb deiner Limite ist.

Alternativ kann auch der ganze Text als Grafik generiert werden, ist aber nicht umbedingt von Vorteil was die Ladezeit der Seite angeht

Es wird verschiessen aussehen wenn (Ohne Gewähr auf Vollständigkeit):
item: Der User die Schrift nicht hat
item: Der User die Textgrössendarstellung an seinem Browser ändert
 
Yaslaws Idee etwas ausgebaut:

PHP:
<?php
function breite ($text) {

$pfad = 'Pfad\ARIAL.TTF';
$punkt = "";

$coordinates = imagettfbbox ( 12, 0, $pfad, $text);

while ($coordinates[4] > 200) {
    $punkt = "...";
    $coordinates = imagettfbbox ( 12, 0, $pfad, $text);
    $pos = strrpos($text, " ");
    $text = substr($text, 0, $pos);
}

echo $text .$punkt;
}



$text = "Der ist kurz";
echo breite($text);

echo "<br />";

$text = "Das ist ein ziemlich langer Text";
echo breite($text);
?>

Geht so wie ich es verstanden habe nur mit True Typ Fonts und der Pfad zur Schrift muss exakt angegeben werden. Aber dann geht es wohl.

Im Beispiel wird der Text gekürzt wenn er Breiter als 200 Pixel ist.
 
Zurück