ERA: Lange wörter in Gästebuch - Wie zerlegen?!

Hallo!

Bastle gerade an meinem eigenen Gästebuch. Es funktioniert schon soweit ganz gut, hat auch schon smilie-unterstützung aber leider hat das GB ein problem....
wenn ein nutzer ein wort mit überlänge schreibt, dann wird durch dieses die tabelle verbreitert!!

Beispiel:

#########################################
#              Gästebuch                #
#########################################

1. Eintrag von "Mir" am 01.01.01

Halli hallo

hallööööööööööööööööööööööööööööööööööööööööööööööööle

#########################################

Jetzt bräuchte ich ein PHP script weches in einer variablen wörter findet welche größer als x-zeichen (z.b.: 50-zeichen) und diese dann nach y-zeichen (z.b.: 20-Zeichen) trennt (meinetwegen durch ein leerzeichen).

Ich hab zwar schon was gefunden was eine Variable immer nach y-Zeichen trennt, aber das möchte ich nicht! Es sollen ja nur überlange wörter geteilt werden und nicht überlange variablen.

Ach, ja und was ganz wichtig ist.
Es sollte darauf achten das keine html tags zerschnitten werden! (besonders der einteilige <img...> und <br> tag)

P.S.: Findet ihr das mein Smilie-script zu einfach/kompliziert ist!?

<?

$array_1 = array(":-)",":)",":-(");
$array_2 = array("<img src="http:/...">","<img src="http://...">","<img src="http://...">");
for($x=0;$x<3;$x++){
  $aktuell[4] = str_replace($array_1[$x],$array_2[$x],$aktuell[4]);
}

?>

MfG Era

  1. hi,

    wenn ein nutzer ein wort mit überlänge schreibt, dann wird durch dieses die tabelle verbreitert!!

    na sowas!! (<- beachte die zwei ausrufezeichen, die die eklatante wichtigkeit dieser aussage angemessen unterstreichen!!)

    und danach schau dir [pref:t=63957&m=363373], da geht#s um genau dein problem.

    gruss,
    wahsaga

    1. und danach schau dir [pref:t=63957&m=363373], da geht#s um genau dein problem.

      Nicht ganz!
      Es dürfen keine html-tags zerlegt werden!!

      ERA

      1. Hello,

        Nicht ganz!
        Es dürfen keine html-tags zerlegt werden!!

        Dann schreib Dir selber eine Funktion.
        String von vorne durchlesen.
        Zeichen zählen seit Leerzeichen
        < zählen

        zählen

        Wenn Anz(<) = Anz(>) darf getrennt werden, wenn Zeichenzahl > x

        Das bekommst Du doch hin, oder? ;-)))

        Grüße

        Tom

        1. Hello,

          in dem Zusammenhang fällt mir ein:

          Was hat es eigentlich mit dem ‌ auf sich. Müsste das nicht das ideale Zeichen für optionale Umbrüche sein?

          Leider habe ich keinen Erfolg damit gehabt bisher. Die Browserhersteller sollten sich schämen.

          Grüße

          Tom

          1. hi,

            Was hat es eigentlich mit dem ‌ auf sich. Müsste das nicht das ideale Zeichen für optionale Umbrüche sein?

            m.e. nicht wirklich, da es ja trotzdem noch ein sichtbares zeichen zwischen zwei buchstaben erzeugt, und damit "blöd" aussieht.

            gruss,
            wahsaga

            1. Hello,

              Was hat es eigentlich mit dem ‌ auf sich. Müsste das nicht das ideale Zeichen für optionale Umbrüche sein?

              m.e. nicht wirklich, da es ja trotzdem noch ein sichtbares zeichen zwischen zwei buchstaben erzeugt, und damit "blöd" aussieht.

              Das mit dem "zero width" passt schon meistens, aber das mit "non junction" funktioniert ja leider nicht. Das Zeichen müsste doch dem Namen nach wie ein Leerzeichen wirken.

              Grüße

              Tom

              1. hi,

                Das mit dem "zero width" passt schon meistens,

                nicht wirklich, würde ich sagen.
                hab damit schon mal aus designerischem interesse ein wenig rumgespielt (texteffekte), und dabei erzeugte der ‌ immer einen ganz schmalen vertikalen trennstrich zwischen zwei buchstaben. und wenn der in einem wort bei deinem einsatzzweck mehrmals auftaucht, sieht das doch sehr seltsam aus ...

                aber das mit "non junction" funktioniert ja leider nicht. Das Zeichen müsste doch dem Namen nach wie ein Leerzeichen wirken.

                wo hast du "non junction" her?
                sowie ich selfhtml entnehmen kann, steht die abkürzung für "zero wide null joiner" - und ein "joiner" verbindet ja eher, als das er trennt ...

                gruss,
                wahsaga

      2. hi,

        Nicht ganz!
        Es dürfen keine html-tags zerlegt werden!!

        ups, den teil hab' ich übersehen.

        <ausrede>
        kein wudner, html in gästebüchern ist ja auch eher unüblich.
        </ausrede>

        gruss,
        wahsaga

  2. Hello,

    wenn ein nutzer ein wort mit überlänge schreibt, dann wird durch dieses die tabelle verbreitert!!
    Jetzt bräuchte ich ein PHP script weches in einer variablen wörter findet welche größer als x-zeichen (z.b.: 50-zeichen) und diese dann nach y-zeichen (z.b.: 20-Zeichen) trennt (meinetwegen durch ein leerzeichen).

    Da wir das Thema heite schonmal hatten (musst mal bitte die Threads durchgehen und nach wordwrap() suchen) möchte ich die Frage erweitern.

    Hat jemand eine Funktion in PHP zur Silbentrennung nebst den notwendigen Mustern? Das würde mich noch interessieren. Müssen ja nicht ALLE Regeln berücksichtigt werden, aber vielleicht die wichtigsten.

    Grüße

    Tom

    1. Hallo,

      Das würde mich noch interessieren.

      Mich auch! Darf aber auch in Perl, Javascript, oder sonstwas sein ;-)

      Gruß Henk

      1. Also...

        ich habe leider keine Zeit und auch im augenblick keine Verwendung dafür, aber ich bin auf der Suche nach Silbentrennungsgeschichten auf die "TeX Hyphenation Patterns" gestossen. Die gibt's für viele Sprachen. Es sind Textdateien, die ziemlich viele Zeilen enthalten, die mehr oder weniger folgendermassen aussehen:

        [...]
        ich1n
        i1cho
        icht5an
        icht3r
        i1chu
        ich1w
        ick6s5te
        ic5l
        i1d
        id3arm
        3ideal
        ide8na
        3ideol
        ide5rö
        i6diot
        id5rec
        id1t
        [...]

        Ich habe keine Ahnung, was das konkret zu bedeuten hat, aber es scheint so zu sein, das TeX diese Dateien für die Silbentrennung benutzt. Ich könnte mir vorstellen, das man mit Hilfe dieser Dateien auch in PHP oder Perl eine Silbentrennung umsetzen könnte.

        Erlich gesagt würde es mich wundern, wenn es sowas nicht schon gäbe...

        Dies als Anregung.

        Gruß Henk

  3. Hallo, Era,

    versuchs mal mit CSS:

    word-wrap: break-word

    http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/wordwrap.asp

    Grüße,

    Sebastian