Mark: Text-Ausgabe "begrenzen"

Hallo Ihr da draussen :-)

Um Scrollbars usw. zu vermeiden, möchte ich mit "weiter/zurück" oder "Seite 1, 2,..." arbeiten.

Ist ja ansich kein Problem, wenn ich z.B. die Anzahl an Datensätzen pro Seite begrenze.

Was aber wenn ich eine Ausgabe mit 10000 Zeichen, 100erten von Absätzen habe, Zeichen begrenzen auch kein Thema, aber die Absätze?

Brauche einen kleinen Denkanstoss

Gruss, Mark

  1. Hello,

    da kannst Du nur so ungefähr schätzen. Die Schriftgröße kennst Du ja auch nicht. Und den Skalierungsfaktor des Clients auch nicht. Und den Zeilenabstand der einzelnen Zeilen auch nicht.

    Du müsstest praktisch die ganze Darstellungsmaschinerie des Browsers nachbilden, um ein einigermaßen brauchbares Ergebnis zu bekommen.

    Grüße

    Tom

    1. Danke Tom,

      dann muss ich das wohl schätzen oder alle Umbrüche vorher entfernen und nur die Zeichen zählen.
      Mal schauen in wie weit meine Ausgabe "vermurkst" wird.

      Gruss und einen schönen Abend noch

      1. Hello,

        ich habe da mir mal eine Funktion abgekrampft, um Fließtext in Spalten aufzuteilen. Da wurde dann aber nur nach dem Wortende geschaut. Bei Deinem Fall sollte man wohl wenigstens bis zum Satzende kommen. Also braucht Du einen Punkt, Ausrufezeichen, Fragezeichen.

        Oder Du schaust eben nur nach </p> und <br /> und was noch so in Frage kommt. Also Zeichen zählen ohne Tags. <br /> und </p> zählen wegen Extrazeile und dann Cut.

        Grüße

        PS: Funktions-Krampf. Vielleicht kannst Du was damit anfangen

        function split_text($spaltenzahl,$text)
        {
          $spalten=array();
            if (intval($spaltenzahl < 1))
          {
            $spaltenzahl=1;
          }

        $spaltennr=1;

        $text = strip_tags($text,"<br>");
          $textlen = strlen($text);
          $textpos = 0;
          $in_tag = false;

        while ($textpos < $textlen)
          {
            while ($textpos < (intval($textlen/$spaltenzahl)*$spaltennr))
            {
              if (!$in_tag)
              {
                if ($text[$textpos]=="<")
                {
                 $in_tag=true;
                }
                $spalten[$spaltennr].=$text[$textpos];
                $textpos++;

        while (!$in_tag and ($text[$textpos]) and (strpos(" -<",$text[$textpos])===false))
                {
                  $spalten[$spaltennr].=$text[$textpos];
                  $textpos++;
                }
              }

        if ($in_tag)
              {
                do
                {
                  $spalten[$spaltennr].=$text[$textpos];

        if ($text[$textpos]==">")
                  {
                    $in_tag = false;
                  }
                  $textpos++;
                }
                while ($in_tag and ($textpos < $textlen));
              }
            }
            $spaltennr++;
          }

        #  for ($spaltennr=0; $spaltennr < $spaltenzahl, $spaltennr++)
        #  {
        #    $spalten[$spaltennr] = htmlentities($spalten[$spaltennr]);
        #  }

        return $spalten;
        }

        1. Wow,

          werde es heute nach Feierabend mal ausprobieren und melde mich dann wieder.

          Vielen Dank schonmal

          Gruss, Mark

  2. Hallo,

    Um Scrollbars usw. zu vermeiden, möchte ich mit "weiter/zurück" oder "Seite 1, 2,..." arbeiten.

    Vorbemerkung:
    Ich persoenlich _hasse_ es, wenn ein zusammenhaengender Artikel
    ueber x Seiten verteilt ist. Am schlimmsten ist es, wenn man nichtmal
    sieht, wieviel Seiten es insgesamt sind, nur "zurueck" und "weiter".
    Oft gibt es wenigstens eine "Druckversion" als Rettung...

    Was aber wenn ich eine Ausgabe mit 10000 Zeichen, 100erten von Absätzen habe, Zeichen begrenzen auch kein Thema, aber die Absätze?

    Ich verstehe die Frage nicht.

    Wie ist bei Dir ein Absatz definiert?

    Vielleicht reicht es, die Anzahl </p> oder \n zu zaehlen?

    Gruesse,

    Thomas

    1. Vorbemerkung:
      Ich persoenlich _hasse_ es, wenn ein zusammenhaengender Artikel
      ueber x Seiten verteilt ist. Am schlimmsten ist es, wenn man nichtmal
      sieht, wieviel Seiten es insgesamt sind, nur "zurueck" und "weiter".

      Meinetwegen  auch "Seite x von y Seiten". Finde ich auch ehrlich gesagt noch besser. Die Meinungen sind da wohl geteilt, scrollen liegt auch nicht jedem.

      Oft gibt es wenigstens eine "Druckversion" als Rettung...

      Druckversion mal schauen, auf jeden Fall aber eine unformatierte Version.

      »»Ich verstehe die Frage nicht.

      Das nehm ich Dir nicht ab... dafür ist das Forum ja bekannt...to be continued:

      Wie ist bei Dir ein Absatz definiert?

      ...aaaah wusste ich es doch, da kommt noch was ;-) (es wird wieder kleinkariert) Meinte natürlich Absätze "und" Umbrüche.

      Vielleicht reicht es, die Anzahl </p> oder \n zu zaehlen?

      ..nee, leider nicht, da der nächste Absatz (evtl. auch ein Umbruch :D) schon nach einem Zeichen kommen könnte, aber es könnte ja auch sein, dass erst nach 1000enden erst was passiert..., meine natürlich Umbruch oder Absatz.

      Gruss und THX