dingdingdong: Satz nach bestimmter Pixelgröße "abschneiden"

Guten Abend,

Ich such eine Möglichkeit einen Satz nach einer bestimmen Größe "abzuschneiden".

Beispiel :
Aus : Ich bin der beste in Nix
wird : Ich bin der...

Hoffe ihr könnt mir helfen!

Gruß

  1. Hi there,

    Ich such eine Möglichkeit einen Satz nach einer bestimmen Größe "abzuschneiden".

    Beispiel :
    Aus : Ich bin der beste in Nix
    wird : Ich bin der...

    Hängt davon ab, wie ernst Du die Sache mit der Pixelgröße meinst. PHP weiss nichts von Pixel, PHP weiss nicht einmal irgendetwas von Deinem Ausgabegerät. Wenn es also wirklich um abschneiden nach einer bestimmten Anzahl Pixel  geht, musst Du Javascript oder CSS bemühen, ich würde da nach CLIP Ausschau halten.

    Wenn Du meinst, den Satz nach einer bestimmten Anzahl von Buchstaben resp. Characters abzuschneiden, solltest Du nach der PHP-Funktion substr suchen, mit der (unter anderem) ist so etwas möglich.

    Wenn Du beides verbinden möchtest, also wissen, wieviele Buchstaben wievielen Pixel entsprichen, wirds richtig kompliziert, dann müsstest Du Metrik und Parameter der verwendeten Schrift einbeziehen; mit Javascript und einer entsprechenden Tabelle (Library?) wäre das uU möglich, ob's sinnvoll ist, ist eine andere Frage...

    1. Hallo,

      mit Javascript und einer entsprechenden Tabelle (Library?) wäre das uU möglich

      ohne Tabelle auch: Iterativ so lange abschneiden und dann "..." anhängen, bis die resultierende Breite des umgebenden Elements kleiner als das gewünschte Maximum wird.

      ob's sinnvoll ist, ist eine andere Frage...

      Richtig. Ich würde auch einfach die Breite des Elements begrenzen und mich nicht um die Breite des Inhalts kümmern.

      Ciao,
       Martin

      --
      "Hier steht, deutsche Wissenschaftler hätten es im Experiment geschafft, die Lichtgeschwindigkeit auf wenige Zentimeter pro Sekunde zu verringern." - "Toll. Steht da auch, wie sie es gemacht haben?" - "Sie haben den Lichtstrahl durch eine Behörde geleitet."
      Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
    2. Hi there,

      Ich such eine Möglichkeit einen Satz nach einer bestimmen Größe "abzuschneiden".

      Beispiel :
      Aus : Ich bin der beste in Nix
      wird : Ich bin der...

      Hängt davon ab, wie ernst Du die Sache mit der Pixelgröße meinst. PHP weiss nichts von Pixel, PHP weiss nicht einmal irgendetwas von Deinem Ausgabegerät. Wenn es also wirklich um abschneiden nach einer bestimmten Anzahl Pixel  geht, musst Du Javascript oder CSS bemühen, ich würde da nach CLIP Ausschau halten.

      Wenn Du meinst, den Satz nach einer bestimmten Anzahl von Buchstaben resp. Characters abzuschneiden, solltest Du nach der PHP-Funktion substr suchen, mit der (unter anderem) ist so etwas möglich.

      Wenn Du beides verbinden möchtest, also wissen, wieviele Buchstaben wievielen Pixel entsprichen, wirds richtig kompliziert, dann müsstest Du Metrik und Parameter der verwendeten Schrift einbeziehen; mit Javascript und einer entsprechenden Tabelle (Library?) wäre das uU möglich, ob's sinnvoll ist, ist eine andere Frage...

      Hmmm das mit substr gefällt mir schon :)
      Kann ja dann eine nicht proportionale Schrift verwenden :P

      1. Hi there,

        Hmmm das mit substr gefällt mir schon :)
        Kann ja dann eine nicht proportionale Schrift verwenden :P

        Ja. Ich weiss ja nicht, in welchem Umfeld Du das brauchst, aber letzten Endes hast Du keinen Einfluss darauf, welche Schrift im Browser des Users verwendet wird oder wie auch nur, wie gross er seine Schrift darstellt. Wirklich sicher sind nur generische Schriftanweisung (Naja, es mag ja Anwender geben, die sich alle Nichtproportionalschriften von der Platte geknallt haben) aber selbst wenn Du font-family:monospace; verwendest, hast Du keine Ahnung, welche Schriftart verwendet wird.
        Der Ansatz "ein Buchstabe entspricht so und so vielen Pixel und damit rechne ich jetzt"  ist einfach falsch, auch und schon gar, wenn Du diese Berechnungen am Server anstellen willst...

        1. Hallo,

          (Naja, es mag ja Anwender geben, die sich alle Nichtproportionalschriften von der Platte geknallt haben)

          das ist eigentlich eine interessante Anregung ...
          Aber wenn überhaupt, dann würde ich eher die nicht-proportionalen Schriften eliminieren.

          Ciao,
           Martin

          --
          Wer barfuß geht, dem kann man nicht die Schuld in die Schuhe schieben.
          Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
          1. Hi there,

            Aber wenn überhaupt, dann würde ich eher die nicht-proportionalen Schriften eliminieren.

            Du bist halt ein echter Hardcore-User der alten Schule. Ich häng ja auch noch der Commandozeile nach. Vor allem: 25 mal die Entertaste gedrückt und der Bildschirm war garantiert leer...;)

            1. Hello,

              Aber wenn überhaupt, dann würde ich eher die nicht-proportionalen Schriften eliminieren.

              Du bist halt ein echter Hardcore-User der alten Schule. Ich häng ja auch noch der Commandozeile nach. Vor allem: 25 mal die Entertaste gedrückt und der Bildschirm war garantiert leer...;)

              Ich habe schon "damals" lieber der 80x50-Modus genutzt :-O

              Liebe Grüße aus dem schönen Oberharz

              Tom vom Berg

              --
               ☻_
              /▌
              / \ Nur selber lernen macht schlau
              http://bergpost.annerschbarrich.de
          2. Hello,

            das ist eigentlich eine interessante Anregung ...
            Aber wenn überhaupt, dann würde ich eher die nicht-proportionalen Schriften eliminieren.

            Dann bau dir doch gleich eine alte Herkules-Grafikkarte wieder ein. Du hast doch bestimmt noch eine ganz unten im Karton ;-P

            Liebe Grüße aus dem schönen Oberharz

            Tom vom Berg

            --
             ☻_
            /▌
            / \ Nur selber lernen macht schlau
            http://bergpost.annerschbarrich.de
    3. @@Klawischnigg:

      nuqneH

      Wenn es also wirklich um abschneiden nach einer bestimmten Anzahl Pixel  geht, musst Du Javascript

      Nein, keinesfalls.

      oder CSS bemühen, ich würde da nach CLIP Ausschau halten.

      Ich nach 'text-overflow'.

      Wenn Du beides verbinden möchtest, also wissen, wieviele Buchstaben wievielen Pixel entsprichen, wirds richtig kompliziert, dann müsstest Du Metrik und Parameter der verwendeten Schrift einbeziehen

      Welche du nicht kennst. Und selbst wenn, müsstest du das Betriebssystem mit einbeziehen, das dieselbe Schrift auf verschiedenen Systemen unterschiedlich gerendert wird.

      Qapla'

      --
      Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
      (Mark Twain)
      1. Hi there,

        Wenn es also wirklich um abschneiden nach einer bestimmten Anzahl Pixel  geht, musst Du Javascript

        Nein, keinesfalls.

        Leider hat er uns ja nicht gesagt, wann er das machen will. NACH dem Laden der Seite bleibt ihm nur Javascript. Wobei ich einräume, daß der Umstand, daß er das Posting unter der Rubrik "PHP" eingeordnet hat eher darauf hindeutet, daß er das noch VOR dem Laden erledigen will. Aber bei den offensichtlichen Kompetenzdefiziten des OP ist auch das nicht sicher.

        oder CSS bemühen, ich würde da nach CLIP Ausschau halten.

        Ich nach 'text-overflow'.

        Was es nicht alles gibt. Da kennt er dann sicher wieder genug Leute (oder noch schlimmer, Kunden) die seine geniale Seite auf einem IE6 betrachten wollen...

        1. @@Klawischnigg:

          nuqneH

          Leider hat er uns ja nicht gesagt, wann er das machen will. NACH dem Laden der Seite bleibt ihm nur Javascript.

          Nein, es bleibt CSS. Nix mit JavaScript für Dinge, die Browser nativ mit CSS können.

          Wobei ich einräume, daß der Umstand, daß er das Posting unter der Rubrik "PHP" eingeordnet hat eher darauf hindeutet, daß er das noch VOR dem Laden erledigen will.

          Ob er will oder nicht, es geht nicht.

          (Man könnte höchstens schätzen, wie viele i passen würden, und den Text schonmal serverseitig auf diese Länge begrenzen, um Übertragungszeit zu sparen. Aber so lang wird ein Text, der in eine Zeile passen soll, wohl nicht sein, dass der Aufwand lohnt.)

          Was es nicht alles gibt. Da kennt er dann sicher wieder genug Leute (oder noch schlimmer, Kunden) die seine geniale Seite auf einem IE6 betrachten wollen...

          Ja und? Dann bekommen die auch die drei Punkte zu sehen. IE 6 unterstützt das seit langem. [CSS3.info, MDN] (Ich glaube das mal den 2 Quellen; hab gerade keinen 6er, um das selbst zu überprüfen.)

          Und wenn noch jemand mit einem nicht aktuellen Firefox daherkommt (sollte nicht passieren, und wenn, selber schuld), dann wird halt einfach abgeschnitten, ohne dass drei Punkte angezeigt werden. Auch kein Weltuntergang.

          Qapla'

          --
          Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
          (Mark Twain)
          1. Hi there,

            Nein, es bleibt CSS. Nix mit JavaScript für Dinge, die Browser nativ mit CSS können.

            ok, ich nehm' zur Kenntnis, daß Du das DOM manipulierst, indem Du einfach: "es werde CSS!" rufst.

            Ob er will oder nicht, es geht nicht.

            (Man könnte höchstens schätzen, wie viele i passen würden, und den Text schonmal serverseitig auf diese Länge begrenzen, um Übertragungszeit zu sparen. Aber so lang wird ein Text, der in eine Zeile passen soll, wohl nicht sein, dass der Aufwand lohnt.)

            Hab ich ja weiter unten behauptet...

            Auch kein Weltuntergang.

            Sag ich ja auch immer, mit HTML oder CSS kann man keine Atomkraftwerke steuern...

            1. @@Klawischnigg:

              nuqneH

              Nein, es bleibt CSS. Nix mit JavaScript für Dinge, die Browser nativ mit CSS können.

              ok, ich nehm' zur Kenntnis, daß Du das DOM manipulierst, indem Du einfach: "es werde CSS!" rufst.

              Warum die Polemik? Ich sagte ja nicht „Nix mit JavaScript für irgendwas“, sondern „für Dinge, die Browser nativ mit CSS können“.

              Und klar manipuliere ich das DOM, indem ich einfach 'body::before {content: "es werde CSS!"}' rufe.

              Qapla'

              --
              Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
              (Mark Twain)
              1. Hi there,

                Warum die Polemik? Ich sagte ja nicht „Nix mit JavaScript für irgendwas“, sondern „für Dinge, die Browser nativ mit CSS können“.

                Ich wollte keineswegs polemisch sein sondern nur verdeutlichen, daß ich mit "nach dem Laden der Seite" eine x-beliebige Anwenderaktion meinte, die eben erst nach dem Laden der Seite passiert und nicht während des Ladens.

                Und klar manipuliere ich das DOM, indem ich einfach 'body::before {content: "es werde CSS!"}' rufe.

                Naja, seit mir mein Rechner zuhört habe ich aufgehört, mit ihm zu reden...;)

  2. Bzw danke für eure Hilfe :)

  3. @@dingdingdong:

    nuqneH

    Ich such eine Möglichkeit einen Satz nach einer bestimmen Größe "abzuschneiden".

    Es ist nicht möglich, mit PHP (oder anderer serverseitiger Technik) einen Text auf eine bestimmte Pixelgröße zu beschneiden.

    Es geht clientseitig mit CSS: Abschneiden zu langer Inhalte.

    Vergiss das '-moz-binding'-Zeugs; Firefox kann 'text-overflow' auch (ab Version 7). Und '-o-text-overflow' für Opera ist auch schon längst überflüssig. (Und es hätte vor 'text-overflow' stehen müssen.)

    Ich muss den Artikel mal auf den neusten Stand bringen.

    Qapla'

    --
    Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
    (Mark Twain)
    1. @@Gunnar Bittersmann:

      nuqneH

      Ich muss den Artikel mal auf den neusten Stand bringen.

      Done.

      Qapla'

      --
      Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
      (Mark Twain)