fritz85: Textlänge bestimmen

Hallo....

Bei mir kann der User per TinyMCE Editor einen Text angeben... dieser wird dann in einer GD-Grafik publiziert...

jedoch habe ich bei der GD-Grafik dies auf 200px(Breite) fix eingestellt..
durch <br> erkennt die gd-grafik das eine der text auf eine neue zeile möchte.

jedoch habe ich das problem:

wenn der user KEIN enter schlag macht (für <br>) und den text am Stuck schreibt geht er über das Bild hinaus...
Gibt es in PHP eine Funktion womit ich die Textlänge bestimmen kann und bei 200px ein <br> setzen kann? Dann ist das wirklich PIXEL genau...

vielen dank für antworten...

gruss
fritz85

  1. echo ($light == true) ? 'Guten Tag,' : 'Guten Abend,';

    also die länge des Textes im px wird so wahrscheinlich gar nicht gehen. Allerdings könntest du die Anzahl der Buchstaben ermitteln und wie Breit das M (glaube breitester Buchstabe) ist. Daraus könntest du sicher eine Annäherung der Breite des Textes in Pixeln bauen.

    Grüße

    Markus

    --
    Langeweile? Sudoku online spielen ;)
    1. also die länge des Textes im px wird so wahrscheinlich gar nicht gehen. Allerdings könntest du die Anzahl der Buchstaben ermitteln und wie Breit das M (glaube breitester Buchstabe) ist. Daraus könntest du sicher eine Annäherung der Breite des Textes in Pixeln bauen.

      Hallo Markus,

      Wie meinst du das genau...?
      Komme nicht ganz nach mit deiner Theorie..

      Gruss
      fritz85

      1. echo ($light == true) ? 'Guten Tag,' : 'Guten Abend,';

        nun du ermittelst wie oft der Buchstabe M auf 200px passt. Dann weißt du wie Breit ein M ist. Für den Text dessen Länge du in etwas wissen möchtest ermittelst du die Anzahl der Buchstaben und könntest dann auf eine Annäherung (der Text in Wirklichkeit kürzer sein) der Länge im px schließen wenn du die Länge des M für alle Buchstaben zu Grunde legst.

        Grüße

        Markus

        --
        Langeweile? Sudoku online spielen ;)
        1. nun du ermittelst wie oft der Buchstabe M auf 200px passt. Dann weißt du wie Breit ein M ist.

          ok alles klar! Könnte es auch mit W probieren...? Weil ich benütze die Schrift: "arial" und dort ist W glaubich am breitesten.

          Für den Text dessen Länge du in etwas wissen möchtest ermittelst du die

          Anzahl der Buchstaben und könntest dann auf eine Annäherung (der Text in Wirklichkeit kürzer sein) der Länge im px schließen wenn du die Länge des M für alle Buchstaben zu Grunde legst.

          Das heisst wenn "M" 22x mal Platz hat können theoretisch nur 22 Buchstaben geschrieben werden....?

          1. echo ($light == true) ? 'Guten Tag,' : 'Guten Abend,';

            Das heisst wenn "M" 22x mal Platz hat können theoretisch nur 22 Buchstaben geschrieben werden....?

            22 oder mehr. M ist meinst der breiteste Buchstabe, d.h. wenn es nur llll sind wird sicher mehr in die Zeile passen. Allerdings könntest du bei 22 Buchstaben z.B. das Wort noch ausschreiben und dann eine neue Zeile einfügen. Es gibt auch Schriften wo alle Buchstaben gleich breit sind, vielleicht wäre dies auch eine Alternative.

            Alternativ habe ich mittlerweile auch noch dies gefunden:
            http://www.php.net/manual/de/function.imagettfbbox.php Allerdings kenne ich die Funktion nicht, scheint aber in die richtige Richtung zu gehen.

            Grüße

            Markus

            --
            Langeweile? Sudoku online spielen ;)
          2. Hi,

            Das heisst wenn "M" 22x mal Platz hat können theoretisch nur 22 Buchstaben geschrieben werden....?

            Nein, das heisst - bei einer nicht-diktengleichen Schriftart - lediglich, dass Platz fuer 22 Ms nebeneinander waere ...

            Natuerlich kannst du das als Naeherung verwenden, wenn du magst.

            Wenn du wissen willst, wie viel Platz der Text wirklich braucht, dann kannst du die Funktion imagettfbbox verwenden - mit der koennte man sich dann durch Abschneiden/Hinzufuegen von Zeichen schrittweise der Maximalbreite annaehern.

            MfG ChrisB