DigitalUP.cz - praktické školení online marketingu pro podnikatele
Zobrazují se odpovědi 1 až 10 z 10

Useknout kus HTML kódu, ošetřit a správně uzavřít tagy

  1. Zdravím.

    Řeším následující problém: dostanu kus HTML kódu, který mám za úkol zleva oříznout, tj. získat z něj prvních např. X znaků textu (ne kódu) a zobrazit ho (a přilepit za něj "...", pokud to pokračuje).
    Dané HTML většinou otevírá několik divů a paragrafů, spanů atd., pak teprve následuje nějaký text.
    Zajímá mě, jak (pokud možno jednoduše, efektivně, elegantně) tento kód ošetřit tak, aby:
    - všechny otevřené tagy (v okamžiku dosažení limitu) byly ve správném pořadí zavřeny
    - v případě, že je kód uříznut uprostřed tagu nebo html entity, nebyly vypsány

    Napadají mě spatra nějaká řešení...
    - získat z kódu regexem i s pozicemi všechny tagy a tak to procházet
    - přistupovat k html v DOMu, do kterého ho nejdřív převedu
    ...ale přijde mi to jako problém, který téměř určitě někdo přede mnou už musel řešit, a tak se ptám, pokud to vyřešil, jak se k takovému řešení dostanu.

    Díky moc.

  2. Co se právě děje na Webtrhu?
  3. Jako chtělo by to znát kontext. Napadá mě víc věcí a nedokážu si to 100% představit. Můžeš dát přímou ukázku?

  4. A potrebujes vubec ten html kod, kdyz mas vytahovat text a dopsat ... ?

    Pak by stacilo totiz odstranit vsechny html tagy a text ti vyleze sam (https://php.net/strip-tags), ten oriznes a je to.

  5. Kód:
    $text = mb_substr(trim(strip_tags($html)),0,100).'...';

  6. Tak pokud nepotřebuje html je to snadný. Ale já to pochopil tak že to html potřebuje.

  7. Když generuješ za část textu tři tečky, předpokládám, že to bude pro zobrazení na frontendu.

    Nemůžeš to řešit přes CSS (text-overflow: ellipsis;)? Tím by ses vyhnul té potřebě řešit uzavírání useknutých HTML tagů.

    Případně tady v té Stackoverflow odpovědi jsou odkazy na funkční víceřádkové řešení - https://stackoverflow.com/a/33061059/1693192 (ať už přes čisté CSS nebo přes JS pluginy).

  8. Citace Původně odeslal Doctore97 Zobrazit příspěvek
    Tak pokud nepotřebuje html je to snadný. Ale já to pochopil tak že to html potřebuje.
    GitHub - dhngoc/php-cut-html-string: PHP Cut HTML String with limit character

  9. nice, neznal jsem, díky

    Citace Původně odeslal Petr Hejda Zobrazit příspěvek
    Když generuješ za část textu tři tečky, předpokládám, že to bude pro zobrazení na frontendu.

    Nemůžeš to řešit přes CSS (text-overflow: ellipsis;)? Tím by ses vyhnul té potřebě řešit uzavírání useknutých HTML tagů.

    Případně tady v té Stackoverflow odpovědi jsou odkazy na funkční víceřádkové řešení - https://stackoverflow.com/a/33061059/1693192 (ať už přes čisté CSS nebo přes JS pluginy).
    Elipsis je k ničemu. Musíš znát přesný rozměry, v praxi jsem to párkrát zkoušel, ale je to nepoužitelný. Pokud fakt potřebuje jen čistý text, tak jak psali výše - strip_tags a ddoat mezeru s třema tečkama (resp výpoustkou).

  10. Díky moc všem za odpovědi.

    @Doctore97: Můžeš dát přímou ukázku?
    Příklad:
    Kód:
    <section>
      <div class="container">
        <p>Lorem ipsum dolor <span>s&igrave;t</span> amet consectetuer fringilla Donec interdum at Mauris.
        </p>
        <p>Id Morbi In elit nibh a Curabitur a justo consequat tempus.</p>
      </div>
      <p>Nam tellus ullamcorper vitae Nunc tincidunt a mattis quam dictum Sed.</p>
    </section>
    zkrácený na 20 znaků textu bude:
    Kód:
    <section>
      <div class="container">
        <p>Lorem ipsum dolor <span>s&igrave;</span>
        </p>
      </div>
    </section>
    Nebo, alternativně, i bez té poslední entity. (Indentace může být zachována či nemusí.)

    @Petr Hejda: text-overflow:ellipsis;
    I v daném odkazu na Stack Overflow výpustka funguje jen pro první řádek.

    @qye: GitHub - dhngoc/php-cut-html-string
    Také jsem neznal - kouknu na to. Vypadá to, že by to mohlo být přesně to, co chci.
    (Letmým zkouknutím kódu to vypadá, že to autor řeší přes regulární výrazy)

  11. Zkracovat HTML/XML jde pomocí DOMDocumentu, do kterého se naloaduje useknuté html a ignoruji se interní chyby. DOMDocument uzavře tagy a výstup je pak validní. Validuju tak HTML content z editoru v CMS. Pokud je třeba zkrátit texty, pak se jen projedou txt nody, které se ořežou.

Hostujeme u Server powered by TELE3