• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

PHP substr Zeichen unterschiedlich lang (sans-serif

cournee

Neues Mitglied
Hey,

Es gibt ja diesen schönen PHP-Befehl substr. Mit dem man ziemlich genau Texte kürzen kann. Jedoch gibts danach ein anderes Problem in sans-serif schriftarten ist nunmal ein "w" länger als ein "i" demnach kann dann trotz gekürztem Text das DIV zu klein für den Inhalt sein. Gibts da ne Lösung ?!

Danke schon mal für hoffentlich schnelle Antworten, ist dringend :neutral:
 
substr arbeitet auf Zählbasis. Dir geht es aber um die Zeichendarstellung. Das wäre eher eine CSS-Frage - kann momentan aber nicht gelöst werden, da jede Schriftart ihre festgelegte Zeichenbreiten hat.
 
ich weiß jetzt nicht um wieviel text es sich in diesem fall handelt, aber kürz doch sicherheitshalber noch ein wenig mehr und sorge fürs einheitliche bild mit justify.
weiß nicht ob das in deinem speziellen fall hilft, aber das ist das einzige, was mir, außer einem monospace-font für das betreffende element, einfällt
 
Speziell finde ich den Fall nicht, dieses Problem hat jede Website mit Fremdinhalt zu lösen. Youtube, Twitter ect. schaffens doch auch. Youtube hat sogar mit CSS einen Textumbruch im DIV geschafft, wo keine Leerzeichen vorhanden sind. Worüber sich alle Foren den Kopf zerbrechen, wenn man fragt wie man das hin bekommt. Monospace könne ich natürlich verwenden, jedoch ist das dann wieder so ne Sache mit Kompatibilität mit den OS und Browser ect. Gibt es nicht eine Möglichkeit nach einer bestimmten Pixelanzahl (width) den Text abschneidet ?
 
Du könntest dem Absatz eine feste Breite geben und mit "overflow: hidden;" die Überlappungen ausblenden. Allerdings gehen dadurch auch textliche Zusammenhänge verloren, da Teile dann nicht sichtbar außerhalb des Absatzes sind.
 
Daran habe ich auch schon gedacht, jedoch werden dann auch Buchstaben teilweise halb dargestellt. Derzeit habe ich die Box mit "w" so lange füllt, bis sie am Rand ankam, habe dann die Zeichen gezählt und diesen Wert für substr verwendet. Um sicher zu gehen. Als weitere Absicherung besitzt die Box ein overflow:hidden. Jedoch sieht das natürlich dumm aus wenn dann teilweise nur 50% des Platzes verwendet werden.
 
Zuletzt bearbeitet:
Daran habe ich auch schon gedacht, jedoch werden dann auch Buchstaben teilweise halb dargestellt. Derzeit habe ich die Box mit "w" so lange füllt, bis sie am Rand ankam, habe dann die Zeichen gezählt und diesen Wert für substr verwendet. Um sicher zu gehen. Als weitere Absicherung besitzt die Box ein overflow:hidden. Jedoch sieht das natürlich dumm aus wenn dann teilweise nur 50% des Platzes verwendet werden.

Meine bisherige Methode werde ich wohl anwenden, ist Design-mäßig ein kleines Verbrechen, aber man braucht sich nur Youtube o. Google anschauen dann findet man genug solche kleinen Design-Schändungen. Wenn demnächst noch eine bessere Lösung kommen sollte, werde ich vllt. diese nachrüsten. Trotzdem danke an die Post's.
 
schau dir mal PHP: imagettfbbox - Manual an, bei normalem text kannst du die maße berechnen. in wie weit das sinn bei deinem vorhaben macht weiss ich nicht.

Wenn ich das richtig verstanden habe, kann man damit die Breite des Textes ermitteln. Jedoch kann ich dann immer noch nicht nach einer bestimmten Anzahl von Pixeln (width) den Text abschneiden/kürzen. Die width muss nähmlich nicht ermittelt werden, die steht schon fest.
 
Ich verstehe die Frage nicht (die absolut keine PHP Frage ist) ein DIV ist ein Blockelement, also immer so breit wie das Elternelement, wenn du es nur so breit haben möchtest wie den Text kannst du ein inline Element verwenden oder mit absolut auf die breite verkleiner (oder vergrößern).

Was für einen Sinn hat es die Breite des Textes ermitteln zu wollen?
 
Ich verstehe die Frage nicht (die absolut keine PHP Frage ist) ein DIV ist ein Blockelement, also immer so breit wie das Elternelement, wenn du es nur so breit haben möchtest wie den Text kannst du ein inline Element verwenden oder mit absolut auf die breite verkleiner (oder vergrößern).

Was für einen Sinn hat es die Breite des Textes ermitteln zu wollen?

Das will ich doch garnicht ! Ich will nur nicht den Text an Hand von blöden Zeichen kürzen sondern an Hand der Breite. Also div ist 500 px lang.. dann will ich das der text auch rein passt, also würde ich ihn gerne nach 450px abschneiden. Wenn man das durch Zeichen zählen macht gibt es da Probleme da ein W länger als ein I ist... Kannst ja mal ausprobieren...
 
Zuletzt bearbeitet:
Zurück
Oben