DannyLupo: substr zerreißt Tags - Syntaxfehler enstehen.

Hallo!

Ich lasse über substr($daten['eintrag'], 0, 100) die ersten 100 Zeichen eines Gästebucheintrags auslesen (aus MYSQL).

Wenn aber ein Image direkt zu Anfang steht, liest er mir nur den Anfangs-Tag ein und hört z.B. nach folgendem auf:

<img src="http://www.bla.de/bla.jpg" alt="

Der Tag ist also nicht geschlossen und alles was folgt, wird als Bildbeschriftung gesehen.

Was kann ich tun, um so etwas zu verhindern?

Vielen Dank im Voraus,
Danny

  1. hi,

    Ich lasse über substr($daten['eintrag'], 0, 100) die ersten 100 Zeichen eines Gästebucheintrags auslesen (aus MYSQL).

    Wenn aber ein Image direkt zu Anfang steht, liest er mir nur den Anfangs-Tag ein und hört z.B. nach folgendem auf:

    <img src="http://www.bla.de/bla.jpg" alt="

    Der Tag ist also nicht geschlossen und alles was folgt, wird als Bildbeschriftung gesehen.

    Was kann ich tun, um so etwas zu verhindern?

    Entferne Tags vorher, und lasse nur reinen Textinhalt in der Vorschau ausgeben.

    Oder überlege dir einen Algorithmus, der nur Zeichen "außerhalb" von Tags "zählt", und erst dann abschneidet, wenn von diesen Zeichen 100 Stück erreicht sind.

    Wenn < und > wirklich _nur_ für HTML-Tags verwendet werden, wäre das über eine Schleife und ein paar Flags recht einfach zu realisieren.
    Allerdings wäre dann noch zu klären, wie du mit HTML-Entities oder nummerischen Zeichennotationen umgehen willst - sollte &copy; als ein Zeichen gezählt werden, etc.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
  2. Hi!
    Poste doch mal den Codeteil... Bitte.

    LG maiskolben

    1. Hi!

      Der Codeschnipsel:
      echo substr($daten['eintrag'], 0, 100);
      echo <br>

      Und in MYSQL gespeichert ist:
      123456789<img src="http://www.bla.de/bla.jpg" alt"
      alternativerText">

      alternativerText"> wird nicht ausgelesen.

      Deswegen ist z.b. <br> der alternative Text des Bildes.

      Hi!
      Poste doch mal den Codeteil... Bitte.

      LG maiskolben

      1. 2 kleine Korrekturen:

        1. Der Fall wäre für substr($daten['eintrag'], 0, 50)
        2. der alternative Text des Bildes ist "echo <br>" ... etc.

        Hi!

        Der Codeschnipsel:
        echo substr($daten['eintrag'], 0, 100);
        echo <br>

        Und in MYSQL gespeichert ist:
        123456789<img src="http://www.bla.de/bla.jpg" alt"
        alternativerText">

        alternativerText"> wird nicht ausgelesen.

        Deswegen ist z.b. <br> der alternative Text des Bildes.

      2. Hi!

        Der Codeschnipsel:
        echo substr($daten['eintrag'], 0, 100);
        echo <br>

        Ich würde es so machen:
        echo substr($daten['eintrag'], 0, 100) . "<br />";

        Und in MYSQL gespeichert ist:
        123456789<img src="http://www.bla.de/bla.jpg" alt"
        alternativerText">

        Ist der Zeilenumbruch so in deiner Tabelle drin?

        LG maiskolben

        1. Und in MYSQL gespeichert ist:
          123456789<img src="http://www.bla.de/bla.jpg" alt"
          alternativerText">

          Ist der Zeilenumbruch so in deiner Tabelle drin?

          Nein.

          Ich würde es so machen:
          echo substr($daten['eintrag'], 0, 100) . "<br />";

          Die Idee klappt.
          Hab das jetzt so:
          echo substr($daten['eintrag'], 0, 100) . "</> ...";

          Vielen Dank!

          1. Hey,

            Das ist aber nicht die feine Englische art ;)
            Mir fällt aber auch keine andere Lösung ein hmmm..

            Joey

  3. Nagut, ich kann auch einfach nur vermuten,
    Du solltest Deine Einträge maskieren...
    "alternativtext..." -> sieht natürlich shiddy aus, wenn Du das so in HTML einbindest...

    pregmatch(); ist Dein Freund...

    LG maiskolben